> Looks good, modulo a few nitpicks below: > > Reviewed-by: Christoph Hellwig <hch@xxxxxx> Thanks! > > On Thu, Jan 02, 2020 at 04:20:25PM +0800, Namjae Jeon wrote: > > +static int exfat_statfs(struct dentry *dentry, struct kstatfs *buf) { > > + struct super_block *sb = dentry->d_sb; > > + struct exfat_sb_info *sbi = EXFAT_SB(sb); > > + unsigned long long id = huge_encode_dev(sb->s_bdev->bd_dev); > > > + if (sbi->used_clusters == ~0u) { > > Various other places use UINT_MAX here instead. Maybe it makes sense to > add a EXFAT_CLUSTERS_UNTRACKED or similar define and use that in all > places? Okay. > > > + if ((new_flag == VOL_DIRTY) && (!buffer_dirty(sbi->pbr_bh))) > > No need for both sets of inner braces. Yep. > > > +static bool is_exfat(struct pbr *pbr) { > > + int i = MUST_BE_ZERO_LEN; > > + > > + do { > > + if (pbr->bpb.f64.res_zero[i - 1]) > > + break; > > + } while (--i); > > + return i ? false : true; > > +} > > I find the MUST_BE_ZERO_LEN a little weird here. Maybe that should be > something like PBP64_RESERVED_LEN? Okay. > > Also I think this could be simplified by just using memchr_inv in the > caller > > if (memchr_inv(pbr->bpb.f64.res_zero, 0, > sizeof(pbr->bpb.f64.res_zero))) > ret = -EINVAL; > goto free_bh; > } Okay. > > > + /* set maximum file size for exFAT */ > > + sb->s_maxbytes = 0x7fffffffffffffffLL; > > That this is setting the max size is pretty obvious. Maybe the comment > should be updated to mention how this max file size is calculated? I will add the comment. Thanks for your review!