]> git.sur5r.net Git - bacula/bacula/commitdiff
Add data end tracking an attribute spooling
authorKern Sibbald <kern@sibbald.com>
Sat, 8 Aug 2009 14:45:08 +0000 (16:45 +0200)
committerKern Sibbald <kern@sibbald.com>
Sat, 8 Aug 2009 14:45:08 +0000 (16:45 +0200)
bacula/src/lib/bsock.h
bacula/src/stored/askdir.c

index fca01157a40ba3e82dccf1de8969d3e06dfd711c..996ce4973e6a36546f147f5c6cef1a07842e1cd3 100644 (file)
@@ -59,6 +59,7 @@ private:
    char *m_host;                      /* Host name/IP */
    int m_port;                        /* desired port */
    btimer_t *m_tid;                   /* timer id */
+   boffset_t m_data_end;              /* offset of last valid data written */
    volatile bool m_timed_out: 1;      /* timed out in read/write */
    volatile bool m_terminated: 1;     /* set when BNET_TERMINATE arrives */
    bool m_duped: 1;                   /* set if duped BSOCK */
@@ -135,6 +136,7 @@ public:
    bool is_timed_out() { return m_timed_out; };
    bool is_stop() { return errors || is_terminated(); }
    bool is_error() { errno = b_errno; return errors; }
+   void set_data_end() { if (m_spool) m_data_end = ftello(m_spool_fd); };
    void set_spooling() { m_spool = true; };
    void clear_spooling() { m_spool = false; };
    void set_duped() { m_duped = true; };
index 37d33bdeff4632f9fb4c1f327dc10535e18e07fe..b85d78e6ebbba8b90cac1caebc0f4eb8037b7053 100644 (file)
@@ -465,6 +465,10 @@ bool dir_update_file_attributes(DCR *dcr, DEV_RECORD *rec)
    ser_bytes(rec->data, rec->data_len);
    dir->msglen = ser_length(dir->msg);
    Dmsg1(1800, ">dird %s\n", dir->msg);    /* Attributes */
+   if (rec->Stream == STREAM_UNIX_ATTRIBUTES || 
+       rec->Stream == STREAM_UNIX_ATTRIBUTES_EX) {
+      dir->set_data_end();                 /* set offset of last valid data */
+   }
    return dir->send();
 }