Re: [patch] s_maxbytes handling

From: Alan Cox (alan@lxorguk.ukuu.org.uk)
Date: Tue May 22 2001 - 10:05:14 EST


> > verification tests. So unless you can cite page and paragraph from SuS and
> > the LFS spec I think the 0 might in fact be correct..
>
> I don't know the standards Alan, but returning zero
> from write() when f_pos is at s_maxbytes will make
> a lot of apps hang up. dd, bash and zsh certainly do.

> Are they buggy? Should they be testing the return value
> of write() and assuming that zero is file-full?

0 is an EOF.

> The s_maxbytes logic is different from the
> MAX_NON_LFS logic:
>
> /*
> * LFS rule
> */
> if ( pos + count > MAX_NON_LFS && !(file->f_flags&O_LARGEFILE)) {
> if (pos >= MAX_NON_LFS) {
> send_sig(SIGXFSZ, current, 0);
> goto out;
> }
>
> This makes more sense. If the file is full, and
> you're trying to grow it, you fail.

The spec says of write

DESCRIPTION

     For regular files, no data transfer will occur past the offset
     maximum established in the open file description associated with
     fildes.

     [EFBIG]
          The file is a regular file, nbyte is greater than 0 and the
          starting position is greater than or equal to the offset
          maximum established in the open file description associated
          with fildes.

Which seems to say to me that if we write > 0 bytes and we start at or
on the boundary we should error - which would agree with your change.

Alan

-
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/



This archive was generated by hypermail 2b29 : Wed May 23 2001 - 21:00:46 EST