Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
B_TAPE_DEV,
B_DVD_DEV,
B_FIFO_DEV,
- B_VTAPE_DEV, /* change to B_TAPE_DEV after init */
+ B_VTAPE_DEV, /* change to B_TAPE_DEV after init */
B_VTL_DEV
};
char pool_name[MAX_NAME_LENGTH]; /* pool name */
char pool_type[MAX_NAME_LENGTH]; /* pool type */
- /* Device wait times ***FIXME*** look at durations */
- char BadVolName[MAX_NAME_LENGTH]; /* Last wrong Volume mounted */
+ char UnloadVolName[MAX_NAME_LENGTH]; /* Last wrong Volume mounted */
bool poll; /* set to poll Volume */
+ /* Device wait times ***FIXME*** look at durations */
int min_wait;
int max_wait;
int max_num_wait;
void set_part_spooled(int val) { if (val) state |= ST_PART_SPOOLED; \
else state &= ~ST_PART_SPOOLED;
};
- void set_unload() { m_unload = true; };
+ bool is_volume_to_unload() const { \
+ return m_unload && strcmp(VolHdr.VolumeName, UnloadVolName) == 0; };
void set_load() { m_load = true; };
void inc_reserved() { m_num_reserved++; }
void set_mounted(int val) { if (val) state |= ST_MOUNTED; \
void clear_media() { state &= ~ST_MEDIA; };
void clear_short_block() { state &= ~ST_SHORT; };
void clear_freespace_ok() { state &= ~ST_FREESPACE_OK; };
- void clear_unload() { m_unload = false; };
+ void clear_unload() { m_unload = false; UnloadVolName[0] = 0; };
void clear_load() { m_load = false; };
char *bstrerror(void) { return errmsg; };
char *print_errmsg() { return errmsg; };
int32_t get_slot() const { return m_slot; };
-
+ void set_unload(); /* in dev.c */
void clear_volhdr(); /* in dev.c */
void close(); /* in dev.c */
void close_part(DCR *dcr); /* in dev.c */
/* 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, ...);
+ int (*d_ioctl)(int fd, ioctl_req_t request, ...);
+ ssize_t (*d_read)(int fd, void *buffer, size_t count);
+ ssize_t (*d_write)(int fd, const void *buffer, size_t count);
/*
* Locking and blocking calls
void clear_reserved();
void set_reserved();
void unreserve_device();
+
+ /* Methods in vol_mgr.c */
bool can_i_use_volume();
+ bool can_i_write_volume();
/* Methods in mount.c */
bool mount_next_write_volume();
void mark_volume_in_error();
void mark_volume_not_inchanger();
int try_autolabel(bool opened);
+ bool find_a_volume();
bool is_suitable_volume_mounted();
bool is_eod_valid();
int check_volume_label(bool &ask, bool &autochanger);
void release_volume();
void do_swapping(bool is_writing);
+ bool do_unload();
+ bool do_load(bool is_writing);
bool is_tape_position_ok();
};
bool m_swapping; /* set when swapping to another drive */
bool m_in_use; /* set when volume reserved or in use */
int32_t m_slot; /* slot of swapping volume */
+ uint32_t m_JobId; /* JobId for read volumes */
public:
dlink link;
char *vol_name; /* Volume name */
void set_slot(int32_t slot) { m_slot = slot; };
void clear_slot() { m_slot = -1; };
int32_t get_slot() const { return m_slot; };
+ uint32_t get_jobid() const { return m_JobId; };
+ void set_jobid(uint32_t JobId) { m_JobId = JobId; };
};