Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'exfat-for-6.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat

Pull exfat fix from Namjae Jeon:

- Fix ftruncate failure when allocating non-contiguous clusters

* tag 'exfat-for-6.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
exfat: fix appending discontinuous clusters to empty file

+21 -14
+21 -14
fs/exfat/file.c
··· 35 35 if (new_num_clusters == num_clusters) 36 36 goto out; 37 37 38 - exfat_chain_set(&clu, ei->start_clu, num_clusters, ei->flags); 39 - ret = exfat_find_last_cluster(sb, &clu, &last_clu); 40 - if (ret) 41 - return ret; 38 + if (num_clusters) { 39 + exfat_chain_set(&clu, ei->start_clu, num_clusters, ei->flags); 40 + ret = exfat_find_last_cluster(sb, &clu, &last_clu); 41 + if (ret) 42 + return ret; 42 43 43 - clu.dir = (last_clu == EXFAT_EOF_CLUSTER) ? 44 - EXFAT_EOF_CLUSTER : last_clu + 1; 44 + clu.dir = last_clu + 1; 45 + } else { 46 + last_clu = EXFAT_EOF_CLUSTER; 47 + clu.dir = EXFAT_EOF_CLUSTER; 48 + } 49 + 45 50 clu.size = 0; 46 51 clu.flags = ei->flags; 47 52 ··· 56 51 return ret; 57 52 58 53 /* Append new clusters to chain */ 59 - if (clu.flags != ei->flags) { 60 - exfat_chain_cont_cluster(sb, ei->start_clu, num_clusters); 61 - ei->flags = ALLOC_FAT_CHAIN; 62 - } 63 - if (clu.flags == ALLOC_FAT_CHAIN) 64 - if (exfat_ent_set(sb, last_clu, clu.dir)) 65 - goto free_clu; 54 + if (num_clusters) { 55 + if (clu.flags != ei->flags) 56 + if (exfat_chain_cont_cluster(sb, ei->start_clu, num_clusters)) 57 + goto free_clu; 66 58 67 - if (num_clusters == 0) 59 + if (clu.flags == ALLOC_FAT_CHAIN) 60 + if (exfat_ent_set(sb, last_clu, clu.dir)) 61 + goto free_clu; 62 + } else 68 63 ei->start_clu = clu.dir; 64 + 65 + ei->flags = clu.flags; 69 66 70 67 out: 71 68 inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));