Print this page
2882 implement libzfs_core
2883 changing "canmount" property to "on" should not always remount dataset
2900 "zfs snapshot" should be able to create multiple, arbitrary snapshots at once
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Chris Siden <christopher.siden@delphix.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Bill Pijewski <wdp@joyent.com>
Reviewed by: Dan Kruchinin <dan.kruchinin@gmail.com>


 269 
 270 #define RW_READER       0
 271 #define RW_WRITER       1
 272 #define RW_DEFAULT      USYNC_THREAD
 273 
 274 #undef RW_READ_HELD
 275 #define RW_READ_HELD(x)         _rw_read_held(&(x)->rw_lock)
 276 
 277 #undef RW_WRITE_HELD
 278 #define RW_WRITE_HELD(x)        _rw_write_held(&(x)->rw_lock)
 279 
 280 extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg);
 281 extern void rw_destroy(krwlock_t *rwlp);
 282 extern void rw_enter(krwlock_t *rwlp, krw_t rw);
 283 extern int rw_tryenter(krwlock_t *rwlp, krw_t rw);
 284 extern int rw_tryupgrade(krwlock_t *rwlp);
 285 extern void rw_exit(krwlock_t *rwlp);
 286 #define rw_downgrade(rwlp) do { } while (0)
 287 
 288 extern uid_t crgetuid(cred_t *cr);

 289 extern gid_t crgetgid(cred_t *cr);
 290 extern int crgetngroups(cred_t *cr);
 291 extern gid_t *crgetgroups(cred_t *cr);
 292 
 293 /*
 294  * Condition variables
 295  */
 296 typedef cond_t kcondvar_t;
 297 
 298 #define CV_DEFAULT      USYNC_THREAD
 299 
 300 extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg);
 301 extern void cv_destroy(kcondvar_t *cv);
 302 extern void cv_wait(kcondvar_t *cv, kmutex_t *mp);
 303 extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime);
 304 extern void cv_signal(kcondvar_t *cv);
 305 extern void cv_broadcast(kcondvar_t *cv);
 306 
 307 /*
 308  * kstat creation, installation and deletion




 269 
 270 #define RW_READER       0
 271 #define RW_WRITER       1
 272 #define RW_DEFAULT      USYNC_THREAD
 273 
 274 #undef RW_READ_HELD
 275 #define RW_READ_HELD(x)         _rw_read_held(&(x)->rw_lock)
 276 
 277 #undef RW_WRITE_HELD
 278 #define RW_WRITE_HELD(x)        _rw_write_held(&(x)->rw_lock)
 279 
 280 extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg);
 281 extern void rw_destroy(krwlock_t *rwlp);
 282 extern void rw_enter(krwlock_t *rwlp, krw_t rw);
 283 extern int rw_tryenter(krwlock_t *rwlp, krw_t rw);
 284 extern int rw_tryupgrade(krwlock_t *rwlp);
 285 extern void rw_exit(krwlock_t *rwlp);
 286 #define rw_downgrade(rwlp) do { } while (0)
 287 
 288 extern uid_t crgetuid(cred_t *cr);
 289 extern uid_t crgetruid(cred_t *cr);
 290 extern gid_t crgetgid(cred_t *cr);
 291 extern int crgetngroups(cred_t *cr);
 292 extern gid_t *crgetgroups(cred_t *cr);
 293 
 294 /*
 295  * Condition variables
 296  */
 297 typedef cond_t kcondvar_t;
 298 
 299 #define CV_DEFAULT      USYNC_THREAD
 300 
 301 extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg);
 302 extern void cv_destroy(kcondvar_t *cv);
 303 extern void cv_wait(kcondvar_t *cv, kmutex_t *mp);
 304 extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime);
 305 extern void cv_signal(kcondvar_t *cv);
 306 extern void cv_broadcast(kcondvar_t *cv);
 307 
 308 /*
 309  * kstat creation, installation and deletion