[Ocfs2-devel] [PATCH] ocfs2: send SIGXFSZ if new filesize exceeds limit
Joel Becker
Joel.Becker at oracle.com
Thu Feb 25 21:55:48 PST 2010
On Fri, Feb 26, 2010 at 10:18:13AM +0800, Wengang Wang wrote:
> On 10-02-25 12:01, Joel Becker wrote:
> > On Fri, Feb 26, 2010 at 12:29:19AM +0800, Wengang Wang wrote:
> > > Yes that I considered using inode_newsize_ok().
> > > I'am not sure if checking i_size is safe(lack of knowledge).
> >
> > It should be, given that i_mutex is held. Filesystems that
> > don't handle their own setattr get to inode_newsize_ok() via
> > vmtruncate.
>
> What if this case:
> 0) there is a file with size 4k.
> 1) user sets file max size to 1k.
> 2) user resize the 4k-size file to 2k.
>
> If we go with inode_newsize_ok(), the operation succeeds. But doesn't it
> disobey the file size limit?
> I didn't find a explicit description for that case. But I prefer that
> step 2) fails.
It was already larger. You haven't broken anything. I don't
know exactly what POSIX says, but since inode_newsize_ok() is the
behavior used by most or all other Linux filesystems, we should be
consistent unless we're sure POSIX disagrees.
Wikipedia states that SIGXFSZ is only triggered when a process
causes a file to *grow* past the limit. It doesn't mention shrinking.
Use inode_newsize_ok().
Joel
--
"There is no sincerer love than the love of food."
- George Bernard Shaw
Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127
More information about the Ocfs2-devel
mailing list