Skip to contentSkip to conversation

Addressing logically the buffer cache

DISCUSSION Juan 3 participants 4 messages Nov 14, 2000 – Nov 16, 2000

lore
Share & tools
lore

Juan

author
#0 lore raw

Hi!.

Is there any patch or project to address logically the buffer cache?. Now, you use three parameters to find a buffer in cache: device, block number, and block size. But, what about if I want to find a buffer using a super block, an inode number, and a block number within the file specified by the inode number.

This mechanism would be very useful for a log-structured file system, for example.

Thanks in advance

Signature · 12 lines
D. Juan Piernas Cánovas
Departamento de Ingeniería y Tecnología de Computadores
Facultad de Informática. Universidad de Murcia
Campus de Espinardo - 30080 Murcia (SPAIN)
Tel.: +34968364633    Fax: +34968364151
email: [email protected]
PGP public key:
http://pgp.rediris.es:11371/pks/lookup?search=piernas%40ditec.um.es&op=index
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
#1 lore raw
Quoted 7 lines · Juan

Hi!.

Is there any patch or project to address logically the buffer cache?. Now, you use three parameters to find a buffer in cache: device, block number, and block size. But, what about if I want to find a buffer using a super block, an inode number, and a block number within the file specified by the inode number.

What's wrong with using the pagecache and per-page buffer_heads?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/

author
#2 lore raw
Quoted 5 lines · Alexander Viro
Quoted 2 lines · Juan

Hi!.

Quoted 7 lines
Quoted 5 lines

Is there any patch or project to address logically the buffer cache?. Now, you use three parameters to find a buffer in cache: device, block number, and block size. But, what about if I want to find a buffer using a super block, an inode number, and a block number within the file specified by the inode number.

What's wrong with using the pagecache and per-page buffer_heads?

Suppose you are implementing a log-structured file system and a process adds a new logical block to a file. Besides, suppose that the segment is 512 KBytes in size. Usually, you don't want to write the segment before it is full. The logical block hasn't got a physical address because you don't build the segment until it is written to disk. So, what happens if another process wants to access to the new block?.

You can't assign a physical address to the new block because the address can change when the buffer is written to disk.

Perhaps, I'm wrong, but I think that the implementation of the BSD-LFS needs to address logically the buffer cache.

Bye!

P.D.: sorry for my bad English ;-)

Signature · 12 lines
D. Juan Piernas Cánovas
Departamento de Ingeniería y Tecnología de Computadores
Facultad de Informática. Universidad de Murcia
Campus de Espinardo - 30080 Murcia (SPAIN)
Tel.: +34968364633    Fax: +34968364151
email: [email protected]
PGP public key:
http://pgp.rediris.es:11371/pks/lookup?search=piernas%40ditec.um.es&op=index
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
#3 lore raw
In reply to Alexander Viro
Quoted 21 lines · Juan
Quoted 5 lines · Alexander Viro
Quoted 2 lines · Juan

Hi!.

Quoted 7 lines
Quoted 5 lines

Is there any patch or project to address logically the buffer cache?. Now, you use three parameters to find a buffer in cache: device, block number, and block size. But, what about if I want to find a buffer using a super block, an inode number, and a block number within the file specified by the inode number.

What's wrong with using the pagecache and per-page buffer_heads?

Suppose you are implementing a log-structured file system and a process adds a new logical block to a file. Besides, suppose that the segment is 512 KBytes in size. Usually, you don't want to write the segment before it is full. The logical block hasn't got a physical address because you don't build the segment until it is written to disk. So, what happens if another process wants to access to the new block?.

Quoted 2 lines

You can't assign a physical address to the new block because the address can change when the buffer is written to disk.

So you don't assign a buffer head until you make the final decision. There are some interesting issues with how you track that your data is dirty but otherwise all is well.

Quoted 3 lines

Perhaps, I'm wrong, but I think that the implementation of the BSD-LFS needs to address logically the buffer cache.

The linux vfs is quite different from the berkley one. The linux page cache is much closer to the berkley block cache, then the depricated linux block cache.

Eric
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/