[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-id: <20080324204510.GH2691@webber.adilger.int>
Date: Mon, 24 Mar 2008 14:45:10 -0600
From: Andreas Dilger <adilger@....com>
To: "Aneesh Kumar K.V" <aneesh.kumar@...ux.vnet.ibm.com>
Cc: Theodore Tso <tytso@....edu>, Eric Sandeen <sandeen@...hat.com>,
ext4 development <linux-ext4@...r.kernel.org>
Subject: Re: e2fsprogs and fast symlink
On Mar 24, 2008 17:07 +0530, Aneesh Kumar K.V wrote:
> @@ -204,6 +204,14 @@ void ext4_delete_inode (struct inode * inode)
> if (inode->i_blocks)
> ext4_truncate(inode);
> +
> + /*
> + * In case of link clear the extent flag. Fast symlinks are not
> + * stored in extent format we use i_blocks count to determine
> + * whether it is fast link or not.
> + */
> + if (S_ISLNK(inode->i_mode))
> + EXT4_I(inode)->i_flags &= ~EXT4_EXTENTS_FL;
This is a big hack I think. It shouldn't matter to e2fsck whether a
deleted long symlink is in extent format or not, and clearing the flag
like this would make it harder to undelete this symlink if needed. This
should be fixed in e2fsck and not the kernel.
Also, it is (IMHO) a hack that we use the i_blocks count to determine
if a symlink is fast or slow. That is what caused the breakage when
EAs on symlinks were added, and if we add extra blocks to symlinks for
some other reason (e.g. more than a single EA block, or other) it will
break again.
Instead I propose that we just use the i_size itself to determine if
there is a fast symlink, because there has never (AFAIK) been a kernel
that created slow symlinks for files < 60 bytes in length.
Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists