Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751137AbbBULm7 (ORCPT ); Sat, 21 Feb 2015 06:42:59 -0500 Received: from mail.parknet.co.jp ([210.171.160.6]:41856 "EHLO mail.parknet.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750784AbbBULm5 (ORCPT ); Sat, 21 Feb 2015 06:42:57 -0500 From: OGAWA Hirofumi To: Alexander Kuleshov Cc: linux-kernel@vger.kernel.org Subject: Re: [PATCH] fs/fat: replace magic numbers with macros from References: <1424459060-12816-1-git-send-email-kuleshovmail@gmail.com> Date: Sat, 21 Feb 2015 20:42:53 +0900 In-Reply-To: <1424459060-12816-1-git-send-email-kuleshovmail@gmail.com> (Alexander Kuleshov's message of "Sat, 21 Feb 2015 01:04:20 +0600") Message-ID: <87bnkno5he.fsf@mail.parknet.co.jp> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2494 Lines: 68 Alexander Kuleshov writes: Those are not EOF, those are mask. For example, EOF_FAT12 can be 0xff8 (some old drivers did this really). And 0xf0000000 means ~0x0fffffff, not free cluster (because FAT32 is 28bits actually). > Signed-off-by: Alexander Kuleshov > --- > fs/fat/fatent.c | 8 ++++---- > include/uapi/linux/msdos_fs.h | 3 +++ > 2 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/fs/fat/fatent.c b/fs/fat/fatent.c > index 260705c..3def7bd 100644 > --- a/fs/fat/fatent.c > +++ b/fs/fat/fatent.c > @@ -129,7 +129,7 @@ static int fat12_ent_get(struct fat_entry *fatent) > next = (*ent12_p[1] << 8) | *ent12_p[0]; > spin_unlock(&fat12_entry_lock); > > - next &= 0x0fff; > + next &= EOF_FAT12; > if (next >= BAD_FAT12) > next = FAT_ENT_EOF; > return next; > @@ -146,7 +146,7 @@ static int fat16_ent_get(struct fat_entry *fatent) > > static int fat32_ent_get(struct fat_entry *fatent) > { > - int next = le32_to_cpu(*fatent->u.ent32_p) & 0x0fffffff; > + int next = le32_to_cpu(*fatent->u.ent32_p) & EOF_FAT32; > WARN_ON((unsigned long)fatent->u.ent32_p & (4 - 1)); > if (next >= BAD_FAT32) > next = FAT_ENT_EOF; > @@ -186,8 +186,8 @@ static void fat16_ent_put(struct fat_entry *fatent, int new) > > static void fat32_ent_put(struct fat_entry *fatent, int new) > { > - WARN_ON(new & 0xf0000000); > - new |= le32_to_cpu(*fatent->u.ent32_p) & ~0x0fffffff; > + WARN_ON(new & FAT_FREE_CLUSTER); > + new |= le32_to_cpu(*fatent->u.ent32_p) & ~EOF_FAT32; > *fatent->u.ent32_p = cpu_to_le32(new); > mark_buffer_dirty_inode(fatent->bhs[0], fatent->fat_inode); > } > diff --git a/include/uapi/linux/msdos_fs.h b/include/uapi/linux/msdos_fs.h > index e956704..6d085bf 100644 > --- a/include/uapi/linux/msdos_fs.h > +++ b/include/uapi/linux/msdos_fs.h > @@ -58,6 +58,9 @@ > #define FAT_FIRST_ENT(s, x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : \ > MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x)) > > +/* indicates that a cluster is free */ > +#define FAT_FREE_CLUSTER 0xf0000000 > + > /* start of data cluster's entry (number of reserved clusters) */ > #define FAT_START_ENT 2 -- OGAWA Hirofumi -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/