At this stage I think it is more important we concentrate on the API
side of things, and worry about the source layout later.
We haven't even decided yet what levels of Squid constitutes a on-disk
object store system, and even less where the boundaries between
filesystem and I/O code is.
I am pretty sure that once the boundaries are identified, making
makefiles to reflect dependencies on shared components won't be that
hard.
Prime candidates for shared components in the current sources:
* The Squid AIO implementation
* UFS directory maintenance
* State logging
/Henrik
Arjan de Vet wrote:
>
> Hi,
>
> A short update on my cleanup of the swaplog code.
>
> - I've extracted the generic part of the code handling the swap.state
> file into a new file src/store_dir_gen.c.
>
> store_dir_ufs.c and store_dir_aufs.c now reference these generic
> routines. These generic routines should be usable for new SquidFS's as
> well which are too lazy to implement swap.state code themselves :-).
>
> - After extracting the swap.state handling and some code/whitespace
> reshuffeling in store_dir_ufs.c and store_dir_aufs.c these files have
> become almost equal after applying the following script:
>
> cp ufs/store_dir_ufs.c store_dir_ufs.c
>
> cat aufs/store_dir_aufs.c | sed '
> s/asyncufs/aufs/g
> s/ASYNCUFS/AUFS/g
> s/aioinfo/aufsinfo/g
> s/AUFS/UFS/g
> s/Aufs/Ufs/g
> s/aufs/ufs/g
> ' > store_dir_aufs.c
>
> The only real difference left is within storeFsSetup_{ufs,aufs}.
>
> Do you think it's a good idea to see if I can merge these two files
> into one which then provides a generic 'UFS L1/L2 layout' layer on
> which store_io_ufs.c and store_io_aufs.c can build? I'm aware I'm
> reverting some parts of Henrik's work on creating fs/{ufs,aufs} here
> but in the end the amount of duplicate code should be much less than
> it is now.
>
> What we would get is a clean separation of the layout of files on disk
> and the I/O method used to read/write them. This could be reflected as
> follows under the src/fs/ hierarchy:
>
> src/fs/
> src/fs/ufs/ UFS L1/L2 layout layer, contains store_dir_ufs.c
> src/fs/ufs/sync/ I/O layer, synchronous (store_io_ufs.c)
> src/fs/ufs/async/ I/O layer, asynchronous (store_io_aufs.c)
> src/fs/ufs/..../ Adrian's and Chris' new I/O model? :-)
> src/fs/raw/ Raw disk layout layer
> src/fs/raw/sync/ I/O layer, synchronous
> src/fs/raw/async/ I/O layer, asynchronous (my posix_aio_fs proposal)
>
> For example: store_io_ufs.c only uses storeUfsDirFullPath and
> storeUfsDirMapBitReset to interface with the store_dir_ufs.c code and
> it's similar in the aufs case.
>
> What's your opinion? Does the above make sense?
>
> - For the current diff (against 2.3.STABLE1-mod1) see
>
> http://www.iae.nl/users/devet/squid/squidfs/
>
> As I said, it's not finished yet so don't include it in a mod2 or
> something similar yet. Nevertheless, comments and suggestions are
> welcome of course.
>
> Arjan
>
> --
> Arjan de Vet, Eindhoven, The Netherlands <Arjan.deVet@adv.iae.nl>
> URL: http://www.iae.nl/users/devet/ for PGP key: finger devet@iae.nl
Received on Mon Jan 24 2000 - 19:08:47 MST
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:12:20 MST