* Re: [PATCH][CFT] (updated) ext2 directories in pagecache
@ 2001-05-10 7:21 Andreas Dilger
2001-05-13 22:15 ` Daniel Phillips
0 siblings, 1 reply; 6+ messages in thread
From: Andreas Dilger @ 2001-05-10 7:21 UTC (permalink / raw)
To: phillips; +Cc: Linux kernel development list
I previously wrote:
> I was looking at the new patch, and I saw something that puzzles me.
> Why do you set the EXT2_INDEX_FL on a new (empty) directory, rather
> than only setting it when the dx_root index is created?
>
> Setting the flag earlier than that makes it mostly useless, since it
> will be set on basically every directory. Not setting it would also
> make your is_dx() check simply a check for the EXT2_INDEX_FL bit (no
> need to also check size).
>
> Also no need to set EXT2_COMPAT_DIR_INDEX until such a time that we have
> a (real) directory with an index, to avoid gratuitous incompatibility
> with e2fsck.
I have changed the code to do the following:
- If the COMPAT_DIR_INDEX flag is set at mount/remount time, set the
INDEX mount option (the same as "mount -o index"). This removes
the need to specify the "-o index" option each time for filesystems
which already have indexed directories.
- New directories NEVER have the INDEX flag set on them.
- If the INDEX mount option is set, then when directories grow past 1
block (and have the index added) they will get the directory INDEX
flag set and turn on the superblock COMPAT_DIR_INDEX flag (if off).
This means that you can have common code for indexed and non-indexed ext2
filesystems, and the admin either needs to explicitly set COMPAT_DIR_INDEX
in the superblock or mount with "-o index" (and create a directory > 1 block).
I have also added some tricks to ext2_inc_count() and ext2_dec_count() so
that indexed directories are not subject to the EXT2_LINK_MAX. I've done
the same as reiserfs, and set i_nlink = 1 if we overflow EXT2_LINK_MAX
(which has been increased to 65500 for indexed directories). Apparently
i_nlink = 1 is the right think to do w.r.t. find and other user tools.
Patches need some light testing before being posted.
Cheers, Andreas
--
Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto,
\ would they cancel out, leaving him still hungry?"
http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH][CFT] (updated) ext2 directories in pagecache 2001-05-10 7:21 [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger @ 2001-05-13 22:15 ` Daniel Phillips 2001-05-13 23:00 ` CMD64x - full DMA support? Paul Dorman 2001-05-14 20:04 ` [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger 0 siblings, 2 replies; 6+ messages in thread From: Daniel Phillips @ 2001-05-13 22:15 UTC (permalink / raw) To: Andreas Dilger; +Cc: Linux kernel development list On Thursday 10 May 2001 09:21, Andreas Dilger wrote: > I previously wrote: > > I was looking at the new patch, and I saw something that puzzles > > me. Why do you set the EXT2_INDEX_FL on a new (empty) directory, > > rather than only setting it when the dx_root index is created? > > > > Setting the flag earlier than that makes it mostly useless, since > > it will be set on basically every directory. Not setting it would > > also make your is_dx() check simply a check for the EXT2_INDEX_FL > > bit (no need to also check size). > > > > Also no need to set EXT2_COMPAT_DIR_INDEX until such a time that we > > have a (real) directory with an index, to avoid gratuitous > > incompatibility with e2fsck. This is fixed in today's patch. > I have changed the code to do the following: > - If the COMPAT_DIR_INDEX flag is set at mount/remount time, set the > INDEX mount option (the same as "mount -o index"). This removes > the need to specify the "-o index" option each time for filesystems > which already have indexed directories. This applied fine. The semantics are a little loose though: after mounting -o index, the first directory that overflows its first block will turn on 'sticky indexing' for that partition. I was originally thinking we should give the admin the ability to create a nonindexed directory if desired, and that's how it used to be before we changed the setting of INDEX_FL from directory creation time to later, when the first directory block overflows. You are probably right on both counts, but it's something to think about. > - New directories NEVER have the INDEX flag set on them. > - If the INDEX mount option is set, then when directories grow past 1 > block (and have the index added) they will get the directory INDEX > flag set and turn on the superblock COMPAT_DIR_INDEX flag (if off). It works this way now. > This means that you can have common code for indexed and non-indexed > ext2 filesystems, and the admin either needs to explicitly set > COMPAT_DIR_INDEX in the superblock or mount with "-o index" (and > create a directory > 1 block). Actually, I've had common code for indexed and non-indexed right from the first prototype, I hope there isn't any misunderstanding there. > I have also added some tricks to ext2_inc_count() and > ext2_dec_count() so that indexed directories are not subject to the > EXT2_LINK_MAX. I've done the same as reiserfs, and set i_nlink = 1 > if we overflow EXT2_LINK_MAX (which has been increased to 65500 for > indexed directories). Apparently i_nlink = 1 is the right think to do > w.r.t. find and other user tools. > > Patches need some light testing before being posted. Today's Patch ----------- The main change in today's patch is the simplified handling of the index creation. Besides that there are quite a few incremental improvements and most, but not all of your recent patch set is in. I broke out 'ext2_add_compat_feature' as a trial balloon. It's not really very satisfying - it's annoying to have a great piece of machinery that's used in exactly one place. I'd prefer to have 'ext2_add_feature' that takes the kind of compatibility as a parameter. We can do this by treating the three ext2_super_block compatibility fields as an array, what do you think? Then we'd get to use it in two places :-] I wrote ext2_append as a wrapper on ext2_bread, mainly to bury the i_size handling. Its function is to append a single block to a file. I pass back the block number of the appended block via a pointer, which is clumsy but the only other choice is to calculate the block number every time outside the function, which just leaves more things to get out of sync. I found a real bug in the continued-hash handling - instead of advancing to the next index block the same block would be reread. Nobody hit this because even with a million file directory the error condition would exist for less than 1 in 250 million entries. Still, correct is correct. Having to deal with such rare conditions is the price we have to pay for the benefits of hashed keys. The max link count logic in your previous patch didn't seem to be complete so I didn't put it in. I'll wait for more from you on that. I followed the ReseirFS thread on this but I'm not sure exactly what form you want this to take in ext2. I followed your recommendation and simplified the index creation and INDEX_FL flag interpretation. Now the index is created for any directory that grows over a block, whereas before the condition was 'any new directory created with indexing enabled that later grows over one block'. The index create code has been moved out of the non-indexed code path and into the scope of the indexed path. This is with a view to cutting ext2_add_entry into pieces at some point, for aesthetic reasons. The one place where I'm relying on a newly-created block to be contain zeros got a comment. I was unable to apply your patch all at once, and of course, I'd hacked on the code some more in the meantime, but I went through by hand and mined out the gold. Please check, I'm sure I missed some. I haven't done anything about the block checking code yet. The patch is at: http://nl.linux.org/~phillips/htree/dx.pcache-2.4.4-5 As before, this is applied on top of Al's patch, available at: ftp://ftp.math.psu.edu/pub/viro/ext2-dir-patch-S4.gz To apply: cd source/tree zcat ext2-dir-patch-S4.gz | patch -p1 cat dx.pcache-2.4.4-4 | patch -p0 To create an indexed directory: mount /dev/hdxxx /test -o index mkdir /test/foo -- Daniel ^ permalink raw reply [flat|nested] 6+ messages in thread
* CMD64x - full DMA support? 2001-05-13 22:15 ` Daniel Phillips @ 2001-05-13 23:00 ` Paul Dorman 2001-05-14 20:04 ` [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger 1 sibling, 0 replies; 6+ messages in thread From: Paul Dorman @ 2001-05-13 23:00 UTC (permalink / raw) To: linux-kernel Hi all. First time writing to the kernel list, so let me know if I break any conventions. This is long, so I thank you all for your help now :o) Paul Dorman. I have two CMD648 PCI ATA66 controllers - one generic and one by Leadtek. At the moment the Leadtek is installed. I have a dual PII 450 machine on a Gigabyte BXD motherboard. My current kernel is 2.4.4-ac4. I understand that there may be hardware flaws with the CMD640 chipset. If this is the case, is there any chance of a work-around? If not, how can I get the best performance out of this card? If I use hdparm to set DMA=1 on a drive attached to the controller I get all kinds of errors when I attempt to access its filesystem: ... ... ide_dmaproc: chipset supported ide_dma_lostirq func only: 13 hde: lost interrupt *or* ... ... /dev/ide/host2/bus0/target0/lun0: p1 /dev/ide/host2/bus0/target0/lun0: p1 reiserfs: checking transaction log (device 21:01) ... Using r5 hash to sort names ReiserFS version 3.6.25 hde: timeout waiting for DMA ide_dmaproc: chipset supported ide_dma_timeout func only: 14 hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest } hde: timeout waiting for DMA ide_dmaproc: chipset supported ide_dma_timeout func only: 14 hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest } hde: timeout waiting for DMA ide_dmaproc: chipset supported ide_dma_timeout func only: 14 hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest } hde: timeout waiting for DMA ide_dmaproc: chipset supported ide_dma_timeout func only: 14 hde: irq timeout: status=0x58 { DriveReady SeekComplete DataRequest } hde: DMA disabled ide2: reset: success <computer hangs> *or* ... ... hde: dma_intr: status=0xff { Busy } hde: DMA disabled ide2: reset timed-out, status=0xff hde: status timeout: status=0xff { Busy } hde: drive not ready for command ide2: reset timed-out, status=0xff hde: status timeout: status=0xff { Busy } end_request: I/O error, dev 21:01 (hde), sector 95948856 hde: drive not ready for command hde: status timeout: status=0xff { Busy } hde: drive not ready for command ide2: reset timed-out, status=0xff hde: status timeout: status=0xff { Busy } hde: drive not ready for command ide2: reset timed-out, status=0xff hde: status timeout: status=0xff { Busy } end_request: I/O error, dev 21:01 (hde), sector 95949360 hde: drive not ready for command hde: status timeout: status=0xff { Busy } hde: drive not ready for command ide2: reset timed-out, status=0xff hde: status timeout: status=0xff { Busy } hde: drive not ready for command ide2: reset timed-out, status=0xff hde: status timeout: status=0xff { Busy } end_request: I/O error, dev 21:01 (hde), sector 95949368 ... I have:- * Shifted cards around, * Tried different interrupts, * Tried THREE different 80 wire cables. I hope this is the pertinent information... =============================[DMESG output]============================ CMD648: IDE controller on PCI bus 00 dev 50 CMD648: chipset revision 1 CMD648: not 100% native mode: will probe irqs later CMD648: ROM enabled at 0xee000000 ide2: BM-DMA at 0xe800-0xe807, BIOS settings: hde:pio, hdf:pio ide3: BM-DMA at 0xe808-0xe80f, BIOS settings: hdg:pio, hdh:pio A little further down is: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 I have tried to force DMA using boot parameters, but without success. ===========================[/proc/interrupts]========================== CPU0 CPU1 0: 1834858 1823909 IO-APIC-edge timer 1: 5073 5179 IO-APIC-edge keyboard 2: 0 0 XT-PIC cascade 7: 0 0 IO-APIC-edge parport0 8: 1 0 IO-APIC-edge rtc 9: 0 0 IO-APIC-edge acpi 10: 4 4 IO-APIC-edge advansys 12: 97363 103087 IO-APIC-edge PS/2 Mouse 14: 181732 211754 IO-APIC-edge ide0 15: 2 10 IO-APIC-edge ide1 16: 1431214 1528254 IO-APIC-level bttv, Ensoniq AudioPCI, nvidia 17: 55827 56939 IO-APIC-level eth0 19: 0 0 IO-APIC-level usb-uhci NMI: 0 0 LOC: 3667630 3667650 ERR: 0 MIS: 21 ===========================[/proc/ide/cmd64x]========================== CMD648 Chipset. --------------- Primary Channel ---------------- Secondary Channel ------------- enabled enabled --------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------ DMA enabled: yes no no no DMA Mode: UDMA(4) PIO(?) PIO(?) PIO(?) PIO Mode: ? ? ? ? polling polling clear clear enabled enabled CFR = 0x40, HI = 0x04, LOW = 0x00 ARTTIM23 = 0x0c, HI = 0x00, LOW = 0x0c MRDMODE = 0x00, HI = 0x00, LOW = 0x00 ======================[/proc/ide/hde/settings]======================== name value min max mode ---- ----- --- --- ---- bios_cyl 119150 0 65535 rw bios_head 16 0 255 rw bios_sect 63 0 63 rw breada_readahead 4 0 127 rw bswap 0 0 1 r current_speed 68 0 69 rw file_readahead 0 0 2097151 rw ide_scsi 0 0 1 rw init_speed 68 0 69 rw io_32bit 0 0 3 rw keepsettings 0 0 1 rw lun 0 0 7 rw max_kb_per_request 127 1 127 rw multcount 0 0 8 rw nice1 1 0 1 rw nowerr 0 0 1 rw number 0 0 3 rw pio_mode write-only 0 255 w slow 0 0 1 rw unmaskirq 0 0 1 rw using_dma 1 0 1 rw =============================[/proc/pci]============================== PCI devices found: Bus 0, device 0, function 0: Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge (rev 2). Master Capable. Latency=64. Prefetchable 32 bit memory at 0xe8000000 [0xebffffff]. Bus 0, device 1, function 0: PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge (rev 2). Master Capable. Latency=64. Min Gnt=136. Bus 0, device 7, function 0: ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 2). Bus 0, device 7, function 1: IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 1). Master Capable. Latency=64. I/O at 0xf000 [0xf00f]. Bus 0, device 7, function 2: USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 1). IRQ 19. Master Capable. Latency=64. I/O at 0xd000 [0xd01f]. Bus 0, device 7, function 3: Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 2). IRQ 9. Bus 0, device 8, function 0: RAID bus controller: CMD Technology Inc PCI0648 (rev 1). IRQ 16. Master Capable. Latency=64. Min Gnt=2.Max Lat=4. I/O at 0xd400 [0xd407]. I/O at 0xd800 [0xd803]. I/O at 0xdc00 [0xdc07]. I/O at 0xe000 [0xe003]. I/O at 0xe400 [0xe40f]. Bus 0, device 9, function 0: Multimedia video controller: Brooktree Corporation Bt848 TV with DMA push (rev 17). IRQ 17. Master Capable. Latency=64. Min Gnt=16.Max Lat=40. Prefetchable 32 bit memory at 0xef000000 [0xef000fff]. Bus 0, device 10, function 0: Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8029(AS) (rev 0). IRQ 18. I/O at 0xe800 [0xe81f]. Bus 0, device 11, function 0: Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 7). IRQ 19. Master Capable. Latency=64. Min Gnt=12.Max Lat=128. I/O at 0xec00 [0xec3f]. Bus 1, device 0, function 0: VGA compatible controller: nVidia Corporation NV15 (Geforce2 GTS) (rev 163). IRQ 16. Master Capable. Latency=248. Min Gnt=5.Max Lat=1. Non-prefetchable 32 bit memory at 0xec000000 [0xecffffff]. Prefetchable 32 bit memory at 0xe0000000 [0xe7ffffff]. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][CFT] (updated) ext2 directories in pagecache 2001-05-13 22:15 ` Daniel Phillips 2001-05-13 23:00 ` CMD64x - full DMA support? Paul Dorman @ 2001-05-14 20:04 ` Andreas Dilger 2001-05-14 22:18 ` Daniel Phillips 2001-05-14 22:23 ` Daniel Phillips 1 sibling, 2 replies; 6+ messages in thread From: Andreas Dilger @ 2001-05-14 20:04 UTC (permalink / raw) To: Daniel Phillips; +Cc: Andreas Dilger, Linux kernel development list Daniel writes: > On Thursday 10 May 2001 09:21, Andreas Dilger wrote: > > I have changed the code to do the following: > > - If the COMPAT_DIR_INDEX flag is set at mount/remount time, set the > > INDEX mount option (the same as "mount -o index"). This removes > > the need to specify the "-o index" option each time for filesystems > > which already have indexed directories. > > This applied fine. The semantics are a little loose though: after > mounting -o index, the first directory that overflows its first block > will turn on 'sticky indexing' for that partition. Maybe we can have a "noindex" mount option for this? In any case, if you have a kernel which supports indexed directories, no harm is done, and it will be ignored by other kernels. There is always the option of doing "tune2fs -O ^dir_index" to turn off that bit. > I was originally thinking we should give the admin the ability to > create a nonindexed directory if desired, and that's how it used to be > before we changed the setting of INDEX_FL from directory creation time > to later, when the first directory block overflows. But you still got INDEX_FL on each new (unindexed) directory, which didn't help much, IMHO. You can always do "chattr -h <dir>" (or whatever the flag will be called) for a directory which you don't want indexed, and it will immediately cease to be an indexed directory (and the index block will revert to a normal directory block). The 'i' flag is already used for the immutable (unchangeable) property. We could use 'I' for indexed directories, but sometimes you will make a mistake and use 'i' and in _theory_ you cannot remove the immutable flag from a file while in multi-user mode for security reasons, so it would be a hassle to fix this. Note I haven't sent a patch to Ted for the hash_indexed flag for chattr, lsattr yet. The only point of contention is what e2fsck will do in the case where COMPAT_DIR_INDEX is set on a filesystem. Does it index all multi-block directories (and set INDEX_FL for all of them)? That would be easiest, but it breaks the ability to selectively turn on/off directory indexing. If e2fsck doesn't index all multi-block directories, then how do you add indexing to an existing directory? Something (kludgy) like: mkdir newdir mv olddir/* newdir rmdir olddir or the following (the "<one filesystem block>" is the tricky part...)(*) find <filesystem> -xdev -type d -size +<one filesystem block> | xargs chattr +h umount e2fsck <device> In general, I can't see a good reason why you would NOT want indexing on some directories and not others once you have chosen to use indexing on a filesystem. If people don't want to use indexing, they just shouldn't turn it on. Since indexing is a "zero information" feature, it is easy to turn the flag on and off and have e2fsck fix it (assuming you have a version of e2fsck that understands indexing). Even so, you can turn off indexing for old e2fsck (by using a backup superblock as it will suggest) and your filesystem is totally OK. When you later get a new e2fsck you can re-enable indexing for the filesystem with no loss of information. (*) This brings up a problem with the "is_dx(dir)" simply checking if the EXT2_INDEX_FL is set. We need to be sure that the code will bail out to linear directory searching properly if there is no index present, so it is possible to set this flag from user space for later e2fsck. > I broke out 'ext2_add_compat_feature' as a trial balloon. It's not > really very satisfying - it's annoying to have a great piece of > machinery that's used in exactly one place. I'd prefer to have > 'ext2_add_feature' that takes the kind of compatibility as a parameter. > We can do this by treating the three ext2_super_block compatibility > fields as an array, what do you think? Then we'd get to use it in two > places :-] Actually, this is used a lot more in ext3, because we set the HAS_JOURNAL flag, and set/unset the RECOVERY flag in several places, so it will be useful there. > The max link count logic in your previous patch didn't seem to be > complete so I didn't put it in. I'll wait for more from you on that. I > followed the ReseirFS thread on this but I'm not sure exactly what form > you want this to take in ext2. I'm not sure what you mean by incomplete (although I did have the aforementioned testing problems, so I never did try > 64k subdirectories in a single directory). Basically, it works the same as reiserfs, with the extra caveat that we limit ourselves to EXT2_LINK_MAX for non-indexed directories (for performance/sanity reasons). We keep link counts for indexed directories until we overflow 64k subdirectories (as opposed to the arbitrary 32000 limit of EXT2_LINK_MAX), after which we use "1" as the directory link count. I also want to make sure the code degrades to the original (slightly simpler) code if CONFIG_EXT2_INDEX is not set. > The index create code has been moved out of the non-indexed code path > and into the scope of the indexed path. This is with a view to cutting > ext2_add_entry into pieces at some point, for aesthetic reasons. Yes, I was hoping for something like this. That function is just getting way too long... I'll hopefully get a chance to look at the new code soon. Cheers, Andreas -- Andreas Dilger \ "If a man ate a pound of pasta and a pound of antipasto, \ would they cancel out, leaving him still hungry?" http://www-mddsp.enel.ucalgary.ca/People/adilger/ -- Dogbert ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][CFT] (updated) ext2 directories in pagecache 2001-05-14 20:04 ` [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger @ 2001-05-14 22:18 ` Daniel Phillips 2001-05-14 22:23 ` Daniel Phillips 1 sibling, 0 replies; 6+ messages in thread From: Daniel Phillips @ 2001-05-14 22:18 UTC (permalink / raw) To: Andreas Dilger; +Cc: Andreas Dilger, Linux kernel development list On Monday 14 May 2001 22:04, Andreas Dilger wrote: > Daniel writes: > > I was originally thinking we should give the admin the ability to > > create a nonindexed directory if desired, and that's how it used to > > be before we changed the setting of INDEX_FL from directory > > creation time to later, when the first directory block overflows. > > But you still got INDEX_FL on each new (unindexed) directory, which > didn't help much, IMHO. You can always do "chattr -h <dir>" (or > whatever the flag will be called) for a directory which you don't > want indexed, and it will immediately cease to be an indexed > directory (and the index block will revert to a normal directory > block). This is my point. The can't do that nicely because they have to wait for the directory to grow past one block. I don't really want to go back to the original way of doing it - the new code is simpler. But... as long as this sits fine with you, it's done. > The 'i' flag is already used for the immutable (unchangeable) > property. We could use 'I' for indexed directories, but sometimes you > will make a mistake and use 'i' and in _theory_ you cannot remove the > immutable flag from a file while in multi-user mode for security > reasons, so it would be a hassle to fix this. Note I haven't sent a > patch to Ted for the hash_indexed flag for chattr, lsattr yet. We still have lots of time. I see "x" isn't taken. > The only point of contention is what e2fsck will do in the case where > COMPAT_DIR_INDEX is set on a filesystem. Does it index all > multi-block directories (and set INDEX_FL for all of them)? That > would be easiest, but it breaks the ability to selectively turn > on/off directory indexing. > > If e2fsck doesn't index all multi-block directories, then how do you > add indexing to an existing directory? Something (kludgy) like: > > mkdir newdir > mv olddir/* newdir > rmdir olddir > > or the following (the "<one filesystem block>" is the tricky > part...)(*) > > find <filesystem> -xdev -type d -size +<one filesystem block> | xargs > chattr +h umount > e2fsck <device> > > In general, I can't see a good reason why you would NOT want indexing > on some directories and not others once you have chosen to use > indexing on a filesystem. If people don't want to use indexing, they > just shouldn't turn it on. "Always on" is so much simpler, given that they asked for it. > Since indexing is a "zero information" feature, it is easy to turn > the flag on and off and have e2fsck fix it (assuming you have a > version of e2fsck that understands indexing). Even so, you can turn > off indexing for old e2fsck (by using a backup superblock as it will > suggest) and your filesystem is totally OK. When you later get a new > e2fsck you can re-enable indexing for the filesystem with no loss of > information. > > (*) This brings up a problem with the "is_dx(dir)" simply checking if > the EXT2_INDEX_FL is set. We need to be sure that the code will bail > out to linear directory searching properly if there is no index > present, so it is possible to set this flag from user space for later > e2fsck. You mean in the case that EXT2_INDEX_FL is set, but there isn't actually an index there, or it's corrupt? It's on my list of things to do. > > The max link count logic in your previous patch didn't seem to be > > complete so I didn't put it in. I'll wait for more from you on > > that. I followed the ReseirFS thread on this but I'm not sure > > exactly what form you want this to take in ext2. > > I'm not sure what you mean by incomplete I didn't mean that, I found the rest of the code (in the other patch) shortly after I wrote it and forgot to edit the mail. > (although I did have the > aforementioned testing problems, so I never did try > 64k > subdirectories in a single directory). Basically, it works the same > as reiserfs, with the extra caveat that we limit ourselves to > EXT2_LINK_MAX for non-indexed directories (for performance/sanity > reasons). We keep link counts for indexed directories until we > overflow 64k subdirectories (as opposed to the arbitrary 32000 limit > of EXT2_LINK_MAX), after which we use "1" as the directory link > count. I also want to make sure the code degrades to the original > (slightly simpler) code if CONFIG_EXT2_INDEX is not set. > > > The index create code has been moved out of the non-indexed code > > path and into the scope of the indexed path. This is with a view > > to cutting ext2_add_entry into pieces at some point, for aesthetic > > reasons. > > Yes, I was hoping for something like this. That function is just > getting way too long... > > I'll hopefully get a chance to look at the new code soon. There's more new code today, you can skip yesterday's :-) -- Daniel ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH][CFT] (updated) ext2 directories in pagecache 2001-05-14 20:04 ` [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger 2001-05-14 22:18 ` Daniel Phillips @ 2001-05-14 22:23 ` Daniel Phillips 1 sibling, 0 replies; 6+ messages in thread From: Daniel Phillips @ 2001-05-14 22:23 UTC (permalink / raw) To: Andreas Dilger; +Cc: Andreas Dilger, Linux kernel development list On Monday 14 May 2001 22:04, Andreas Dilger wrote: > Maybe we can have a "noindex" mount option for this? We need that regardless, I just keep forgetting to put it in. I assume the semantics are obvious: no new indexes are created but existing ones are maintained. I.e., -o noindex does not mean 'seek out and destroy all indexes'. -- Daniel ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2001-05-14 22:42 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2001-05-10 7:21 [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger 2001-05-13 22:15 ` Daniel Phillips 2001-05-13 23:00 ` CMD64x - full DMA support? Paul Dorman 2001-05-14 20:04 ` [PATCH][CFT] (updated) ext2 directories in pagecache Andreas Dilger 2001-05-14 22:18 ` Daniel Phillips 2001-05-14 22:23 ` Daniel Phillips
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.