| To: | Chris Wedgwood <cw@xxxxxxxx> |
|---|---|
| Subject: | Re: [PATCH] xfs: revert to double-buffering readdir |
| From: | Stephen Lord <lord@xxxxxxx> |
| Date: | Sat, 1 Dec 2007 07:04:27 -0600 |
| Cc: | Timothy Shimmin <tes@xxxxxxx>, Christoph Hellwig <hch@xxxxxxxxxxxxx>, linux-xfs@xxxxxxxxxxx, LKML <linux-kernel@xxxxxxxxxxxxxxx> |
| In-reply-to: | <20071130230435.GA12626@puku.stupidest.org> |
| References: | <20071114070400.GA25708@puku.stupidest.org> <20071125163014.GA17922@infradead.org> <474FBA21.4070201@sgi.com> <165B249C-FE97-4B27-927B-B39DE316CB23@xfs.org> <20071130230435.GA12626@puku.stupidest.org> |
| Sender: | xfs-bounce@xxxxxxxxxxx |
On Fri, Nov 30, 2007 at 04:36:25PM -0600, Stephen Lord wrote: I told you I did not read any code..... once a directory is out of the inode and into disk blocks, there will be a lock on the buffer while the contents are copied out.
Too long ago to remember exact reasons. The only thing I do recall is issues with glibc readdir code which wanted to remember positions in a dir and seek backwards. It was translating structures and could end up with more data from the kernel than would fit in the user buffer. This may have something to do with that and special values used as eof markers in the getdents output and signed 32 bit arguments to lseek. In the original xfs directory code, the offset of an entry was a 64 bit hash+offset value, that really confused things when glibc attempted to do math on it. I also recall that the offsets in the directory fields had different meanings on different OS's. Sometimes it was the offset of the entry itself, sometimes it was the offset of the next entry, that was one of the reasons for the translation layer I think. Steve |
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Next by Date: | Undeliverable mail: Delivery reports about your e-mail, MAILER-DAEMON |
|---|---|
| Next by Thread: | Re: [PATCH] xfs: revert to double-buffering readdir, Christoph Hellwig |
| Indexes: | [Date] [Thread] [Top] [All Lists] |