[sorry, original went to vger.rutgers.edu, thus the resend]

        Folks, who the #$!^ added quota support on minixfs? It's broken by
design - "heuristics" replacing ->i_blocks in dquot_transfer() is worse
than useless. Proof:

        fd = create("foo", 0777);
        lseek(fd, 1<<16, 0);
        write(fd, &dummy, 1);
        fchown(fd, SOME_UID, SOME_GID);
        close(fd);
        unlink("foo");

and there you go - 1 block charged to your UID/GID, 130 blocks transfered
to SOME_UID/SOME_GID, 1 block dropped from SOME_UID/SOME_GID. Balance:
129 blocks transfered from your UID/GID to SOME_UID/SOME_GID, filesystem
left in original state. Lather, rinse, repeat. See quota subsystem eating
flaming death when you get negative charge on GID.

        There's simply no way to do quota on minixfs without full
scan of indirect blocks upon chown(). We might pretend that there is no
such thing as sparse file, but that would (a) suck horribly and (b) take
quite a piece of kludgery in dquot_alloc_block()/dquot_free_block().

        Linus, could we please get rid of this... thing? I'm asking for
clearance to remove the kludge completely - if somebody needs quota on
minixfs he'ld better speak _now_ and tell what semantics he really wants.
Current variant is broken. IMO - hopelessly. Filesystem simply doesn't
keep enough state to implement the block quotas. It's not about the
implementation, the problem is in on-disk inode layout, so blame AST for
that.

                                                        Al


-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]

Reply via email to