Add stack I/O manager.
PATCH 1/2 Add stack I/O manager.
This I/O manager helps in stacking different I/O managers. For example one can stack the undo I/O manager on top of Unix I/O manager to achieve the undo functionality.
Signed-off-by Aneesh Kumar K.V <[email protected]>
--- lib/ext2fs/Makefile.in | 10 +- lib/ext2fs/ext2_io.h | 4 + lib/ext2fs/stack_io.c | 419 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 431 insertions(+), 2 deletions(-) create mode 100644 lib/ext2fs/stack_io.c
lib/ext2fs/Makefile.in +8 -2
@@ -66,7 +66,8 @@ OBJS= $(DEBUGFS_LIB_OBJS) $(RESIZE_LIB_OBJS) $(E2IMAGE_LIB_OBJS) \ unix_io.o \ unlink.o \ valid_blk.o \ - version.o + version.o \ + stack_io.o SRCS= ext2_err.c \ $(srcdir)/alloc.c \
@@ -134,7 +135,8 @@ SRCS= ext2_err.c \ $(srcdir)/tst_bitops.c \ $(srcdir)/tst_byteswap.c \ $(srcdir)/tst_getsize.c \ - $(srcdir)/tst_iscan.c + $(srcdir)/tst_iscan.c \ + $(srcdir)/stack_io.c HFILES= bitops.h ext2fs.h ext2_io.h ext2_fs.h ext2_ext_attr.h ext3_extents.h HFILES_IN= ext2_err.h ext2_types.h
@@ -550,3 +552,7 @@ tst_iscan.o: $(srcdir)/tst_iscan.c $(srcdir)/ext2_fs.h \ $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \ $(srcdir)/ext2_fs.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/bitops.h +stack_io.o: $(srcdir)/stack_io.c $(srcdir)/ext2_fs.h \ + $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \ + $(srcdir)/ext2_fs.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \ + $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/bitops.h
lib/ext2fs/ext2_io.h +4 -0
@@ -96,6 +96,10 @@ extern errcode_t io_channel_write_byte(io_channel channel,/* unix_io.c */ extern io_manager unix_io_manager; +/* stack_io.c */ +extern struct struct_io_manager *stack_io_manager_init (void ); +extern errcode_t stack_push_io_manager (struct struct_io_manager *stack, +struct struct_io_manager *io);/* test_io.c */ extern io_manager test_io_manager, test_io_backing_manager;extern void (*test_io_cb_read_blk)
lib/ext2fs/stack_io.c new file +419 -0
419 lines not on this page · raw message
Signature · 1 line
1.5.2.rc0.71.g4342-dirty