Re: [Ext2-devel] [PATCH] concurrent block allocation for ext2 against 2.5.64

Matthew Wilcox (willy@debian.org)
Thu, 13 Mar 2003 19:09:08 +0000


On Thu, Mar 13, 2003 at 09:43:05PM +0300, Alex Tomas wrote:
>
> fs/attr.c:
> if (ia_valid & ATTR_SIZE) {
> if (attr->ia_size == inode->i_size) {
> if (ia_valid == ATTR_SIZE)
> goto out; /* we can skip lock_kernel() */
> } else {
> lock_kernel();
> error = vmtruncate(inode, attr->ia_size);
> unlock_kernel();
> if (error)
> goto out;
> }
> }
>
> so, all (!) truncates are serialized

This looks like a bug. It should be safe to delete them. Rationale:

- Documentation/filesystems/Locking says ->truncate is called without the BKL.
- This isn't the only place vmtruncate() is called. Several of the callers
do it without the BKL (eg xfs, cifs).
- vmtruncate() appears to handle its own locking (mapping->i_shared_sem)

Comments?

-- 
"It's not Hollywood.  War is real, war is primarily not about defeat or
victory, it is about death.  I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk
-
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/