]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
exfat: add balloc parameter to exfat_map_cluster() for iomap support
authorNamjae Jeon <linkinjeon@kernel.org>
Thu, 23 Apr 2026 05:38:51 +0000 (14:38 +0900)
committerNamjae Jeon <linkinjeon@kernel.org>
Mon, 15 Jun 2026 10:55:34 +0000 (19:55 +0900)
In preparation for supporting the iomap infrastructure, we need to know
whether a new cluster was allocated or not in exfat_map_cluster().

Add an optional 'bool *balloc' output parameter. When a new cluster is
allocated, *balloc is set to true. Pass NULL from exfat_get_block() to
preserve the existing behavior.

Acked-by: Christoph Hellwig <hch@lst.de>
Acked-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/inode.c

index 249a35e2b4b237eaddb8d8fd70a9d92dbbb505b7..a10d4f3c66a178e7271da88a7f6b5110c6220c94 100644 (file)
@@ -124,7 +124,8 @@ void exfat_sync_inode(struct inode *inode)
  * *clu = (~0), if it's unable to allocate a new cluster
  */
 static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset,
-               unsigned int *clu, unsigned int *count, int create)
+               unsigned int *clu, unsigned int *count, int create,
+               bool *balloc)
 {
        int ret;
        unsigned int last_clu;
@@ -229,6 +230,8 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset,
                if (exfat_cluster_walk(sb, clu, num_to_be_allocated - 1, ei->flags))
                        return -EIO;
                *count = 1;
+               if (balloc)
+                       *balloc = true;
        }
 
        /* hint information */
@@ -262,7 +265,7 @@ static int exfat_get_block(struct inode *inode, sector_t iblock,
        /* Is this block already allocated? */
        count = exfat_bytes_to_cluster_round_up(sbi, bh_result->b_size);
        err = exfat_map_cluster(inode, iblock >> sbi->sect_per_clus_bits,
-                       &cluster, &count, create);
+                       &cluster, &count, create, NULL);
        if (err) {
                if (err != -ENOSPC)
                        exfat_fs_error_ratelimit(sb,