X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Fdev.h;h=9d022184408efeb35c45561869a163948b5d7f63;hb=5c358307600ad7cd6983b8773f8d7dc1e7346c56;hp=fbfa735b687ba7294f50a8dbe0a1fc76fe719600;hpb=a31672357d06fb69836a08df85eeb8fb31502956;p=bacula%2Fbacula diff --git a/bacula/src/stored/dev.h b/bacula/src/stored/dev.h index fbfa735b68..9d02218440 100644 --- a/bacula/src/stored/dev.h +++ b/bacula/src/stored/dev.h @@ -95,7 +95,8 @@ enum { B_TAPE_DEV, B_DVD_DEV, B_FIFO_DEV, - B_VTL_DEV + B_FAKETAPE_DEV, /* change to B_TAPE_DEV after init */ + B_VTL_DEV }; /* Generic status bits returned from status_dev() */ @@ -241,6 +242,7 @@ public: POOLMEM *prt_name; /* Name used for display purposes */ char *errmsg; /* nicely edited error message */ uint32_t block_num; /* current block number base 0 */ + uint32_t LastBlock; /* last DEV_BLOCK number written to Volume */ uint32_t file; /* current file number base 0 */ uint64_t file_addr; /* Current file read/write address */ uint64_t file_size; /* Current file size */ @@ -306,11 +308,13 @@ public: int is_autochanger() const { return capabilities & CAP_AUTOCHANGER; } int requires_mount() const { return capabilities & CAP_REQMOUNT; } int is_removable() const { return capabilities & CAP_REM; } - int is_tape() const { return dev_type == B_TAPE_DEV; } + int is_tape() const { return (dev_type == B_TAPE_DEV || + dev_type == B_FAKETAPE_DEV); } int is_file() const { return dev_type == B_FILE_DEV; } int is_fifo() const { return dev_type == B_FIFO_DEV; } int is_dvd() const { return dev_type == B_DVD_DEV; } int is_vtl() const { return dev_type == B_VTL_DEV; } + int is_faketape() const { return dev_type == B_FAKETAPE_DEV; } int is_open() const { return m_fd >= 0; } int is_offline() const { return state & ST_OFFLINE; } int is_labeled() const { return state & ST_LABEL; } @@ -425,6 +429,14 @@ public: uint32_t get_block_num() const { return block_num; }; int fd() const { return m_fd; }; + /* low level operations */ + void init_backend(); + int (*d_open)(const char *pathname, int flags, ...); + int (*d_read)(int fd, void *buffer, unsigned int count); + int (*d_write)(int fd, const void *buffer, unsigned int count); + int (*d_close)(int fd); + int (*d_ioctl)(int fd, unsigned long int request, ...); + /* * Locking and blocking calls */