Re: [PATCH 59/60] xfs: Add xfs_log_rlimit.c

Mark Tinguely
2013-06-24T21:26:33Z

On 06/18/13 23:51, Dave Chinner wrote:
> + * 2) If the lsunit option is specified, a transaction requires 2 LSU
> + * for the reservation because there are two log writes that can
> + * require padding - the transaction data and the commit record which
> + * are written separately and both can require padding to the LSU.
> + * Consider that we can have an active CIL reservation holding 2*LSU,
> + * but the CIL is not over a push threshold, in this case, if we
> + * don't have enough log space for at one new transaction, which
> + * includes another 2*LSU in the reservation, we will run into dead
> + * loop situation in log space grant procedure. i.e.
> + * xlog_grant_head_wait().
> + *
> + * Hence the log size needs to be able to contain two maximally sized
> + * and padded transactions, which is (2 * (2 * LSU + maxlres)).
> + *

Any thoughts on how we can separate the 2 * log stripe unit from the
reservation.

The added extended attribute calls for parent inode pointers (especially
xfs_rename() where it could add up to one and remove up to two
attributes) is causing a huge multiplication cnt for reservation. Those
multiplications would be killers on 256KiB log stripe units.

--Mark.