aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux/fuse.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux/fuse.h')
-rw-r--r--include/uapi/linux/fuse.h443
1 files changed, 222 insertions, 221 deletions
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
index 4c43b4448792..60bb2f9f7b74 100644
--- a/include/uapi/linux/fuse.h
+++ b/include/uapi/linux/fuse.h
@@ -90,20 +90,18 @@
90 * 7.21 90 * 7.21
91 * - add FUSE_READDIRPLUS 91 * - add FUSE_READDIRPLUS
92 * - send the requested events in POLL request 92 * - send the requested events in POLL request
93 *
94 * 7.22
95 * - add FUSE_ASYNC_DIO
93 */ 96 */
94 97
95#ifndef _LINUX_FUSE_H 98#ifndef _LINUX_FUSE_H
96#define _LINUX_FUSE_H 99#define _LINUX_FUSE_H
97 100
98#ifdef __linux__ 101#ifdef __KERNEL__
99#include <linux/types.h> 102#include <linux/types.h>
100#else 103#else
101#include <stdint.h> 104#include <stdint.h>
102#define __u64 uint64_t
103#define __s64 int64_t
104#define __u32 uint32_t
105#define __s32 int32_t
106#define __u16 uint16_t
107#endif 105#endif
108 106
109/* 107/*
@@ -130,7 +128,7 @@
130#define FUSE_KERNEL_VERSION 7 128#define FUSE_KERNEL_VERSION 7
131 129
132/** Minor version number of this interface */ 130/** Minor version number of this interface */
133#define FUSE_KERNEL_MINOR_VERSION 21 131#define FUSE_KERNEL_MINOR_VERSION 22
134 132
135/** The node ID of the root inode */ 133/** The node ID of the root inode */
136#define FUSE_ROOT_ID 1 134#define FUSE_ROOT_ID 1
@@ -139,42 +137,42 @@
139 userspace works under 64bit kernels */ 137 userspace works under 64bit kernels */
140 138
141struct fuse_attr { 139struct fuse_attr {
142 __u64 ino; 140 uint64_t ino;
143 __u64 size; 141 uint64_t size;
144 __u64 blocks; 142 uint64_t blocks;
145 __u64 atime; 143 uint64_t atime;
146 __u64 mtime; 144 uint64_t mtime;
147 __u64 ctime; 145 uint64_t ctime;
148 __u32 atimensec; 146 uint32_t atimensec;
149 __u32 mtimensec; 147 uint32_t mtimensec;
150 __u32 ctimensec; 148 uint32_t ctimensec;
151 __u32 mode; 149 uint32_t mode;
152 __u32 nlink; 150 uint32_t nlink;
153 __u32 uid; 151 uint32_t uid;
154 __u32 gid; 152 uint32_t gid;
155 __u32 rdev; 153 uint32_t rdev;
156 __u32 blksize; 154 uint32_t blksize;
157 __u32 padding; 155 uint32_t padding;
158}; 156};
159 157
160struct fuse_kstatfs { 158struct fuse_kstatfs {
161 __u64 blocks; 159 uint64_t blocks;
162 __u64 bfree; 160 uint64_t bfree;
163 __u64 bavail; 161 uint64_t bavail;
164 __u64 files; 162 uint64_t files;
165 __u64 ffree; 163 uint64_t ffree;
166 __u32 bsize; 164 uint32_t bsize;
167 __u32 namelen; 165 uint32_t namelen;
168 __u32 frsize; 166 uint32_t frsize;
169 __u32 padding; 167 uint32_t padding;
170 __u32 spare[6]; 168 uint32_t spare[6];
171}; 169};
172 170
173struct fuse_file_lock { 171struct fuse_file_lock {
174 __u64 start; 172 uint64_t start;
175 __u64 end; 173 uint64_t end;
176 __u32 type; 174 uint32_t type;
177 __u32 pid; /* tgid */ 175 uint32_t pid; /* tgid */
178}; 176};
179 177
180/** 178/**
@@ -220,6 +218,7 @@ struct fuse_file_lock {
220 * FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages 218 * FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages
221 * FUSE_DO_READDIRPLUS: do READDIRPLUS (READDIR+LOOKUP in one) 219 * FUSE_DO_READDIRPLUS: do READDIRPLUS (READDIR+LOOKUP in one)
222 * FUSE_READDIRPLUS_AUTO: adaptive readdirplus 220 * FUSE_READDIRPLUS_AUTO: adaptive readdirplus
221 * FUSE_ASYNC_DIO: asynchronous direct I/O submission
223 */ 222 */
224#define FUSE_ASYNC_READ (1 << 0) 223#define FUSE_ASYNC_READ (1 << 0)
225#define FUSE_POSIX_LOCKS (1 << 1) 224#define FUSE_POSIX_LOCKS (1 << 1)
@@ -236,6 +235,7 @@ struct fuse_file_lock {
236#define FUSE_AUTO_INVAL_DATA (1 << 12) 235#define FUSE_AUTO_INVAL_DATA (1 << 12)
237#define FUSE_DO_READDIRPLUS (1 << 13) 236#define FUSE_DO_READDIRPLUS (1 << 13)
238#define FUSE_READDIRPLUS_AUTO (1 << 14) 237#define FUSE_READDIRPLUS_AUTO (1 << 14)
238#define FUSE_ASYNC_DIO (1 << 15)
239 239
240/** 240/**
241 * CUSE INIT request/reply flags 241 * CUSE INIT request/reply flags
@@ -364,143 +364,143 @@ enum fuse_notify_code {
364#define FUSE_COMPAT_ENTRY_OUT_SIZE 120 364#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
365 365
366struct fuse_entry_out { 366struct fuse_entry_out {
367 __u64 nodeid; /* Inode ID */ 367 uint64_t nodeid; /* Inode ID */
368 __u64 generation; /* Inode generation: nodeid:gen must 368 uint64_t generation; /* Inode generation: nodeid:gen must
369 be unique for the fs's lifetime */ 369 be unique for the fs's lifetime */
370 __u64 entry_valid; /* Cache timeout for the name */ 370 uint64_t entry_valid; /* Cache timeout for the name */
371 __u64 attr_valid; /* Cache timeout for the attributes */ 371 uint64_t attr_valid; /* Cache timeout for the attributes */
372 __u32 entry_valid_nsec; 372 uint32_t entry_valid_nsec;
373 __u32 attr_valid_nsec; 373 uint32_t attr_valid_nsec;
374 struct fuse_attr attr; 374 struct fuse_attr attr;
375}; 375};
376 376
377struct fuse_forget_in { 377struct fuse_forget_in {
378 __u64 nlookup; 378 uint64_t nlookup;
379}; 379};
380 380
381struct fuse_forget_one { 381struct fuse_forget_one {
382 __u64 nodeid; 382 uint64_t nodeid;
383 __u64 nlookup; 383 uint64_t nlookup;
384}; 384};
385 385
386struct fuse_batch_forget_in { 386struct fuse_batch_forget_in {
387 __u32 count; 387 uint32_t count;
388 __u32 dummy; 388 uint32_t dummy;
389}; 389};
390 390
391struct fuse_getattr_in { 391struct fuse_getattr_in {
392 __u32 getattr_flags; 392 uint32_t getattr_flags;
393 __u32 dummy; 393 uint32_t dummy;
394 __u64 fh; 394 uint64_t fh;
395}; 395};
396 396
397#define FUSE_COMPAT_ATTR_OUT_SIZE 96 397#define FUSE_COMPAT_ATTR_OUT_SIZE 96
398 398
399struct fuse_attr_out { 399struct fuse_attr_out {
400 __u64 attr_valid; /* Cache timeout for the attributes */ 400 uint64_t attr_valid; /* Cache timeout for the attributes */
401 __u32 attr_valid_nsec; 401 uint32_t attr_valid_nsec;
402 __u32 dummy; 402 uint32_t dummy;
403 struct fuse_attr attr; 403 struct fuse_attr attr;
404}; 404};
405 405
406#define FUSE_COMPAT_MKNOD_IN_SIZE 8 406#define FUSE_COMPAT_MKNOD_IN_SIZE 8
407 407
408struct fuse_mknod_in { 408struct fuse_mknod_in {
409 __u32 mode; 409 uint32_t mode;
410 __u32 rdev; 410 uint32_t rdev;
411 __u32 umask; 411 uint32_t umask;
412 __u32 padding; 412 uint32_t padding;
413}; 413};
414 414
415struct fuse_mkdir_in { 415struct fuse_mkdir_in {
416 __u32 mode; 416 uint32_t mode;
417 __u32 umask; 417 uint32_t umask;
418}; 418};
419 419
420struct fuse_rename_in { 420struct fuse_rename_in {
421 __u64 newdir; 421 uint64_t newdir;
422}; 422};
423 423
424struct fuse_link_in { 424struct fuse_link_in {
425 __u64 oldnodeid; 425 uint64_t oldnodeid;
426}; 426};
427 427
428struct fuse_setattr_in { 428struct fuse_setattr_in {
429 __u32 valid; 429 uint32_t valid;
430 __u32 padding; 430 uint32_t padding;
431 __u64 fh; 431 uint64_t fh;
432 __u64 size; 432 uint64_t size;
433 __u64 lock_owner; 433 uint64_t lock_owner;
434 __u64 atime; 434 uint64_t atime;
435 __u64 mtime; 435 uint64_t mtime;
436 __u64 unused2; 436 uint64_t unused2;
437 __u32 atimensec; 437 uint32_t atimensec;
438 __u32 mtimensec; 438 uint32_t mtimensec;
439 __u32 unused3; 439 uint32_t unused3;
440 __u32 mode; 440 uint32_t mode;
441 __u32 unused4; 441 uint32_t unused4;
442 __u32 uid; 442 uint32_t uid;
443 __u32 gid; 443 uint32_t gid;
444 __u32 unused5; 444 uint32_t unused5;
445}; 445};
446 446
447struct fuse_open_in { 447struct fuse_open_in {
448 __u32 flags; 448 uint32_t flags;
449 __u32 unused; 449 uint32_t unused;
450}; 450};
451 451
452struct fuse_create_in { 452struct fuse_create_in {
453 __u32 flags; 453 uint32_t flags;
454 __u32 mode; 454 uint32_t mode;
455 __u32 umask; 455 uint32_t umask;
456 __u32 padding; 456 uint32_t padding;
457}; 457};
458 458
459struct fuse_open_out { 459struct fuse_open_out {
460 __u64 fh; 460 uint64_t fh;
461 __u32 open_flags; 461 uint32_t open_flags;
462 __u32 padding; 462 uint32_t padding;
463}; 463};
464 464
465struct fuse_release_in { 465struct fuse_release_in {
466 __u64 fh; 466 uint64_t fh;
467 __u32 flags; 467 uint32_t flags;
468 __u32 release_flags; 468 uint32_t release_flags;
469 __u64 lock_owner; 469 uint64_t lock_owner;
470}; 470};
471 471
472struct fuse_flush_in { 472struct fuse_flush_in {
473 __u64 fh; 473 uint64_t fh;
474 __u32 unused; 474 uint32_t unused;
475 __u32 padding; 475 uint32_t padding;
476 __u64 lock_owner; 476 uint64_t lock_owner;
477}; 477};
478 478
479struct fuse_read_in { 479struct fuse_read_in {
480 __u64 fh; 480 uint64_t fh;
481 __u64 offset; 481 uint64_t offset;
482 __u32 size; 482 uint32_t size;
483 __u32 read_flags; 483 uint32_t read_flags;
484 __u64 lock_owner; 484 uint64_t lock_owner;
485 __u32 flags; 485 uint32_t flags;
486 __u32 padding; 486 uint32_t padding;
487}; 487};
488 488
489#define FUSE_COMPAT_WRITE_IN_SIZE 24 489#define FUSE_COMPAT_WRITE_IN_SIZE 24
490 490
491struct fuse_write_in { 491struct fuse_write_in {
492 __u64 fh; 492 uint64_t fh;
493 __u64 offset; 493 uint64_t offset;
494 __u32 size; 494 uint32_t size;
495 __u32 write_flags; 495 uint32_t write_flags;
496 __u64 lock_owner; 496 uint64_t lock_owner;
497 __u32 flags; 497 uint32_t flags;
498 __u32 padding; 498 uint32_t padding;
499}; 499};
500 500
501struct fuse_write_out { 501struct fuse_write_out {
502 __u32 size; 502 uint32_t size;
503 __u32 padding; 503 uint32_t padding;
504}; 504};
505 505
506#define FUSE_COMPAT_STATFS_SIZE 48 506#define FUSE_COMPAT_STATFS_SIZE 48
@@ -510,32 +510,32 @@ struct fuse_statfs_out {
510}; 510};
511 511
512struct fuse_fsync_in { 512struct fuse_fsync_in {
513 __u64 fh; 513 uint64_t fh;
514 __u32 fsync_flags; 514 uint32_t fsync_flags;
515 __u32 padding; 515 uint32_t padding;
516}; 516};
517 517
518struct fuse_setxattr_in { 518struct fuse_setxattr_in {
519 __u32 size; 519 uint32_t size;
520 __u32 flags; 520 uint32_t flags;
521}; 521};
522 522
523struct fuse_getxattr_in { 523struct fuse_getxattr_in {
524 __u32 size; 524 uint32_t size;
525 __u32 padding; 525 uint32_t padding;
526}; 526};
527 527
528struct fuse_getxattr_out { 528struct fuse_getxattr_out {
529 __u32 size; 529 uint32_t size;
530 __u32 padding; 530 uint32_t padding;
531}; 531};
532 532
533struct fuse_lk_in { 533struct fuse_lk_in {
534 __u64 fh; 534 uint64_t fh;
535 __u64 owner; 535 uint64_t owner;
536 struct fuse_file_lock lk; 536 struct fuse_file_lock lk;
537 __u32 lk_flags; 537 uint32_t lk_flags;
538 __u32 padding; 538 uint32_t padding;
539}; 539};
540 540
541struct fuse_lk_out { 541struct fuse_lk_out {
@@ -543,134 +543,135 @@ struct fuse_lk_out {
543}; 543};
544 544
545struct fuse_access_in { 545struct fuse_access_in {
546 __u32 mask; 546 uint32_t mask;
547 __u32 padding; 547 uint32_t padding;
548}; 548};
549 549
550struct fuse_init_in { 550struct fuse_init_in {
551 __u32 major; 551 uint32_t major;
552 __u32 minor; 552 uint32_t minor;
553 __u32 max_readahead; 553 uint32_t max_readahead;
554 __u32 flags; 554 uint32_t flags;
555}; 555};
556 556
557struct fuse_init_out { 557struct fuse_init_out {
558 __u32 major; 558 uint32_t major;
559 __u32 minor; 559 uint32_t minor;
560 __u32 max_readahead; 560 uint32_t max_readahead;
561 __u32 flags; 561 uint32_t flags;
562 __u16 max_background; 562 uint16_t max_background;
563 __u16 congestion_threshold; 563 uint16_t congestion_threshold;
564 __u32 max_write; 564 uint32_t max_write;
565}; 565};
566 566
567#define CUSE_INIT_INFO_MAX 4096 567#define CUSE_INIT_INFO_MAX 4096
568 568
569struct cuse_init_in { 569struct cuse_init_in {
570 __u32 major; 570 uint32_t major;
571 __u32 minor; 571 uint32_t minor;
572 __u32 unused; 572 uint32_t unused;
573 __u32 flags; 573 uint32_t flags;
574}; 574};
575 575
576struct cuse_init_out { 576struct cuse_init_out {
577 __u32 major; 577 uint32_t major;
578 __u32 minor; 578 uint32_t minor;
579 __u32 unused; 579 uint32_t unused;
580 __u32 flags; 580 uint32_t flags;
581 __u32 max_read; 581 uint32_t max_read;
582 __u32 max_write; 582 uint32_t max_write;
583 __u32 dev_major; /* chardev major */ 583 uint32_t dev_major; /* chardev major */
584 __u32 dev_minor; /* chardev minor */ 584 uint32_t dev_minor; /* chardev minor */
585 __u32 spare[10]; 585 uint32_t spare[10];
586}; 586};
587 587
588struct fuse_interrupt_in { 588struct fuse_interrupt_in {
589 __u64 unique; 589 uint64_t unique;
590}; 590};
591 591
592struct fuse_bmap_in { 592struct fuse_bmap_in {
593 __u64 block; 593 uint64_t block;
594 __u32 blocksize; 594 uint32_t blocksize;
595 __u32 padding; 595 uint32_t padding;
596}; 596};
597 597
598struct fuse_bmap_out { 598struct fuse_bmap_out {
599 __u64 block; 599 uint64_t block;
600}; 600};
601 601
602struct fuse_ioctl_in { 602struct fuse_ioctl_in {
603 __u64 fh; 603 uint64_t fh;
604 __u32 flags; 604 uint32_t flags;
605 __u32 cmd; 605 uint32_t cmd;
606 __u64 arg; 606 uint64_t arg;
607 __u32 in_size; 607 uint32_t in_size;
608 __u32 out_size; 608 uint32_t out_size;
609}; 609};
610 610
611struct fuse_ioctl_iovec { 611struct fuse_ioctl_iovec {
612 __u64 base; 612 uint64_t base;
613 __u64 len; 613 uint64_t len;
614}; 614};
615 615
616struct fuse_ioctl_out { 616struct fuse_ioctl_out {
617 __s32 result; 617 int32_t result;
618 __u32 flags; 618 uint32_t flags;
619 __u32 in_iovs; 619 uint32_t in_iovs;
620 __u32 out_iovs; 620 uint32_t out_iovs;
621}; 621};
622 622
623struct fuse_poll_in { 623struct fuse_poll_in {
624 __u64 fh; 624 uint64_t fh;
625 __u64 kh; 625 uint64_t kh;
626 __u32 flags; 626 uint32_t flags;
627 __u32 events; 627 uint32_t events;
628}; 628};
629 629
630struct fuse_poll_out { 630struct fuse_poll_out {
631 __u32 revents; 631 uint32_t revents;
632 __u32 padding; 632 uint32_t padding;
633}; 633};
634 634
635struct fuse_notify_poll_wakeup_out { 635struct fuse_notify_poll_wakeup_out {
636 __u64 kh; 636 uint64_t kh;
637}; 637};
638 638
639struct fuse_fallocate_in { 639struct fuse_fallocate_in {
640 __u64 fh; 640 uint64_t fh;
641 __u64 offset; 641 uint64_t offset;
642 __u64 length; 642 uint64_t length;
643 __u32 mode; 643 uint32_t mode;
644 __u32 padding; 644 uint32_t padding;
645}; 645};
646 646
647struct fuse_in_header { 647struct fuse_in_header {
648 __u32 len; 648 uint32_t len;
649 __u32 opcode; 649 uint32_t opcode;
650 __u64 unique; 650 uint64_t unique;
651 __u64 nodeid; 651 uint64_t nodeid;
652 __u32 uid; 652 uint32_t uid;
653 __u32 gid; 653 uint32_t gid;
654 __u32 pid; 654 uint32_t pid;
655 __u32 padding; 655 uint32_t padding;
656}; 656};
657 657
658struct fuse_out_header { 658struct fuse_out_header {
659 __u32 len; 659 uint32_t len;
660 __s32 error; 660 int32_t error;
661 __u64 unique; 661 uint64_t unique;
662}; 662};
663 663
664struct fuse_dirent { 664struct fuse_dirent {
665 __u64 ino; 665 uint64_t ino;
666 __u64 off; 666 uint64_t off;
667 __u32 namelen; 667 uint32_t namelen;
668 __u32 type; 668 uint32_t type;
669 char name[]; 669 char name[];
670}; 670};
671 671
672#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) 672#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
673#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1)) 673#define FUSE_DIRENT_ALIGN(x) \
674 (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
674#define FUSE_DIRENT_SIZE(d) \ 675#define FUSE_DIRENT_SIZE(d) \
675 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen) 676 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
676 677
@@ -685,47 +686,47 @@ struct fuse_direntplus {
685 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen) 686 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
686 687
687struct fuse_notify_inval_inode_out { 688struct fuse_notify_inval_inode_out {
688 __u64 ino; 689 uint64_t ino;
689 __s64 off; 690 int64_t off;
690 __s64 len; 691 int64_t len;
691}; 692};
692 693
693struct fuse_notify_inval_entry_out { 694struct fuse_notify_inval_entry_out {
694 __u64 parent; 695 uint64_t parent;
695 __u32 namelen; 696 uint32_t namelen;
696 __u32 padding; 697 uint32_t padding;
697}; 698};
698 699
699struct fuse_notify_delete_out { 700struct fuse_notify_delete_out {
700 __u64 parent; 701 uint64_t parent;
701 __u64 child; 702 uint64_t child;
702 __u32 namelen; 703 uint32_t namelen;
703 __u32 padding; 704 uint32_t padding;
704}; 705};
705 706
706struct fuse_notify_store_out { 707struct fuse_notify_store_out {
707 __u64 nodeid; 708 uint64_t nodeid;
708 __u64 offset; 709 uint64_t offset;
709 __u32 size; 710 uint32_t size;
710 __u32 padding; 711 uint32_t padding;
711}; 712};
712 713
713struct fuse_notify_retrieve_out { 714struct fuse_notify_retrieve_out {
714 __u64 notify_unique; 715 uint64_t notify_unique;
715 __u64 nodeid; 716 uint64_t nodeid;
716 __u64 offset; 717 uint64_t offset;
717 __u32 size; 718 uint32_t size;
718 __u32 padding; 719 uint32_t padding;
719}; 720};
720 721
721/* Matches the size of fuse_write_in */ 722/* Matches the size of fuse_write_in */
722struct fuse_notify_retrieve_in { 723struct fuse_notify_retrieve_in {
723 __u64 dummy1; 724 uint64_t dummy1;
724 __u64 offset; 725 uint64_t offset;
725 __u32 size; 726 uint32_t size;
726 __u32 dummy2; 727 uint32_t dummy2;
727 __u64 dummy3; 728 uint64_t dummy3;
728 __u64 dummy4; 729 uint64_t dummy4;
729}; 730};
730 731
731#endif /* _LINUX_FUSE_H */ 732#endif /* _LINUX_FUSE_H */