1 package dbms_fuse
2 authid current_user
3 as
4
5
6
7 -- inode types
8 S_IFDIR constant pls_integer := 16384;
9 S_IFLNK constant pls_integer := 40960;
10 S_IFREG constant pls_integer := 32768;
11
12 -- file modes
13 MODE_DIR constant pls_integer := 16877; /* drwxr-xr-x */
14 MODE_LINK constant pls_integer := 41471; /* lrwxrwxrwx */
15 MODE_FILE constant pls_integer := 33188; /* -rw-r--r-- */
16
17 -- default uid/gid
18 DEFAULT_UID constant pls_integer := 0; /* root */
19 DEFAULT_GID constant pls_integer := 0; /* root */
20
21 -- posix properties
22 posix_nlink constant varchar2(32) := 'posix:nlink';
23 posix_mode constant varchar2(32) := 'posix:mode';
24 posix_uid constant varchar2(32) := 'posix:uid';
25 posix_gid constant varchar2(32) := 'posix:gid';
26
27 -- extended attributes flags
28 XATTR_CREATE constant pls_integer := 1;
29 XATTR_REPLACE constant pls_integer := 2;
30
31
32
33 type dir_entry_t is record (
34 path varchar2(1024), /* dbms_dbfs_content.path_t */
35 item_name varchar2(256), /* dbms_dbfs_content.name_t */
36 st_ino integer,
37 st_mode integer,
38 st_nlink integer,
39 st_uid integer,
40 st_gid integer,
41 st_size integer,
42 st_blksize integer,
43 st_blocks integer,
44 st_atime integer,
45 st_mtime integer,
46 st_ctime integer,
47 st_atimens integer,
48 st_mtimens integer,
49 st_ctimens integer
50 );
51 type dir_entries_t is table of dir_entry_t;
52
53
54 /* table of dbms_dbfs_content.propname_t */
55 type propnames_t is table of varchar2(32);
56
57
58 function fs_getattr(
59 path in varchar2,
60 st_ino out integer,
61 st_mode out integer,
62 st_nlink out integer,
63 st_uid out integer,
64 st_gid out integer,
65 st_size out integer,
66 st_blksize out integer,
67 st_blocks out integer,
68 st_atime out integer,
69 st_mtime out integer,
70 st_ctime out integer)
71 return integer;
72
73 function fs_getattr(
74 path in varchar2,
75 st_ino out integer,
76 st_mode out integer,
77 st_nlink out integer,
78 st_uid out integer,
79 st_gid out integer,
80 st_size out integer,
81 st_blksize out integer,
82 st_blocks out integer,
83 st_atime out integer,
84 st_mtime out integer,
85 st_ctime out integer,
86 st_atimens out integer,
87 st_mtimens out integer,
88 st_ctimens out integer)
89 return integer;
90
91
92 function fs_readlink(
93 path in varchar2,
94 link out nocopy varchar2)
95 return integer;
96
97
98 function fs_mknod(
99 path in varchar2,
100 st_mode in integer default MODE_FILE,
101 st_uid in integer default 0,
102 st_gid in integer default 0)
103 return integer;
104
105 function fs_mknod(
106 path in varchar2,
107 st_mode in integer default MODE_FILE,
108 st_uid in integer default 0,
109 st_gid in integer default 0,
110 ret_ino out integer,
111 ret_mode out integer,
112 ret_nlink out integer,
113 ret_uid out integer,
114 ret_gid out integer,
115 ret_size out integer,
116 ret_blksize out integer,
117 ret_blocks out integer,
118 ret_atime out integer,
119 ret_mtime out integer,
120 ret_ctime out integer)
121 return integer;
122
123 function fs_mknod(
124 path in varchar2,
125 st_mode in integer default MODE_FILE,
126 st_uid in integer default 0,
127 st_gid in integer default 0,
128 ret_ino out integer,
129 ret_mode out integer,
130 ret_nlink out integer,
131 ret_uid out integer,
132 ret_gid out integer,
133 ret_size out integer,
134 ret_blksize out integer,
135 ret_blocks out integer,
136 ret_atime out integer,
137 ret_mtime out integer,
138 ret_ctime out integer,
139 ret_atimens out integer,
140 ret_mtimens out integer,
141 ret_ctimens out integer)
142 return integer;
143
144
145 function fs_mkdir(
146 path in varchar2,
147 st_mode in integer default MODE_DIR,
148 st_uid in integer default 0,
149 st_gid in integer default 0)
150 return integer;
151
152 function fs_mkdir(
153 path in varchar2,
154 st_mode in integer default MODE_DIR,
155 st_uid in integer default 0,
156 st_gid in integer default 0,
157 ret_ino out integer,
158 ret_mode out integer,
159 ret_nlink out integer,
160 ret_uid out integer,
161 ret_gid out integer,
162 ret_size out integer,
163 ret_blksize out integer,
164 ret_blocks out integer,
165 ret_atime out integer,
166 ret_mtime out integer,
167 ret_ctime out integer)
168 return integer;
169
170 function fs_mkdir(
171 path in varchar2,
172 st_mode in integer default MODE_DIR,
173 st_uid in integer default 0,
174 st_gid in integer default 0,
175 ret_ino out integer,
176 ret_mode out integer,
177 ret_nlink out integer,
178 ret_uid out integer,
179 ret_gid out integer,
180 ret_size out integer,
181 ret_blksize out integer,
182 ret_blocks out integer,
183 ret_atime out integer,
184 ret_mtime out integer,
185 ret_ctime out integer,
186 ret_atimens out integer,
187 ret_mtimens out integer,
188 ret_ctimens out integer)
189 return integer;
190
191
192 function fs_unlink(
193 path in varchar2)
194 return integer;
195
196 function fs_rmdir(
197 path in varchar2)
198 return integer;
199
200
201 function fs_symlink(
202 path in varchar2,
203 link in varchar2,
204 st_uid in integer default 0,
205 st_gid in integer default 0)
206 return integer;
207
208 function fs_symlink(
209 path in varchar2,
210 link in varchar2,
211 st_uid in integer default 0,
212 st_gid in integer default 0,
213 ret_ino out integer,
214 ret_mode out integer,
215 ret_nlink out integer,
216 ret_uid out integer,
217 ret_gid out integer,
218 ret_size out integer,
219 ret_blksize out integer,
220 ret_blocks out integer,
221 ret_atime out integer,
222 ret_mtime out integer,
223 ret_ctime out integer)
224 return integer;
225
226 function fs_symlink(
227 path in varchar2,
228 link in varchar2,
229 st_uid in integer default 0,
230 st_gid in integer default 0,
231 ret_ino out integer,
232 ret_mode out integer,
233 ret_nlink out integer,
234 ret_uid out integer,
235 ret_gid out integer,
236 ret_size out integer,
237 ret_blksize out integer,
238 ret_blocks out integer,
239 ret_atime out integer,
240 ret_mtime out integer,
241 ret_ctime out integer,
242 ret_atimens out integer,
243 ret_mtimens out integer,
244 ret_ctimens out integer)
245 return integer;
246
247
248 function fs_rename(
249 opath in varchar2,
250 npath in varchar2)
251 return integer;
252
253 function fs_move(
254 opath in varchar2,
255 npath in varchar2)
256 return integer;
257
258
259 function fs_link(
260 path in varchar2,
261 link in varchar2,
262 st_uid in integer default 0,
263 st_gid in integer default 0)
264 return integer;
265
266 function fs_link(
267 path in varchar2,
268 link in varchar2,
269 st_uid in integer default 0,
270 st_gid in integer default 0,
271 ret_ino out integer,
272 ret_mode out integer,
273 ret_nlink out integer,
274 ret_uid out integer,
275 ret_gid out integer,
276 ret_size out integer,
277 ret_blksize out integer,
278 ret_blocks out integer,
279 ret_atime out integer,
280 ret_mtime out integer,
281 ret_ctime out integer)
282 return integer;
283
284 function fs_link(
285 path in varchar2,
286 link in varchar2,
287 st_uid in integer default 0,
288 st_gid in integer default 0,
289 ret_ino out integer,
290 ret_mode out integer,
291 ret_nlink out integer,
292 ret_uid out integer,
293 ret_gid out integer,
294 ret_size out integer,
295 ret_blksize out integer,
296 ret_blocks out integer,
297 ret_atime out integer,
298 ret_mtime out integer,
299 ret_ctime out integer,
300 ret_atimens out integer,
301 ret_mtimens out integer,
302 ret_ctimens out integer)
303 return integer;
304
305
306 function fs_chmod(
307 path in varchar2,
308 st_mode in integer)
309 return integer;
310
311 function fs_chmod(
312 path in varchar2,
313 st_mode in integer,
314 ret_ino out integer,
315 ret_mode out integer,
316 ret_nlink out integer,
317 ret_uid out integer,
318 ret_gid out integer,
319 ret_size out integer,
320 ret_blksize out integer,
324 ret_ctime out integer)
321 ret_blocks out integer,
322 ret_atime out integer,
323 ret_mtime out integer,
325 return integer;
326
327 function fs_chmod(
328 path in varchar2,
329 st_mode in integer,
330 ret_ino out integer,
331 ret_mode out integer,
332 ret_nlink out integer,
333 ret_uid out integer,
334 ret_gid out integer,
335 ret_size out integer,
336 ret_blksize out integer,
337 ret_blocks out integer,
338 ret_atime out integer,
339 ret_mtime out integer,
340 ret_ctime out integer,
341 ret_atimens out integer,
342 ret_mtimens out integer,
343 ret_ctimens out integer)
344 return integer;
345
346
347 function fs_chown(
348 path in varchar2,
349 st_uid in integer,
350 st_gid in integer)
351 return integer;
352
353 function fs_chown(
354 path in varchar2,
355 st_uid in integer,
356 st_gid in integer,
357 ret_ino out integer,
358 ret_mode out integer,
359 ret_nlink out integer,
360 ret_uid out integer,
361 ret_gid out integer,
362 ret_size out integer,
363 ret_blksize out integer,
364 ret_blocks out integer,
365 ret_atime out integer,
366 ret_mtime out integer,
367 ret_ctime out integer)
368 return integer;
369
370 function fs_chown(
371 path in varchar2,
372 st_uid in integer,
373 st_gid in integer,
374 ret_ino out integer,
375 ret_mode out integer,
376 ret_nlink out integer,
377 ret_uid out integer,
378 ret_gid out integer,
379 ret_size out integer,
380 ret_blksize out integer,
381 ret_blocks out integer,
382 ret_atime out integer,
383 ret_mtime out integer,
384 ret_ctime out integer,
385 ret_atimens out integer,
386 ret_mtimens out integer,
387 ret_ctimens out integer)
388 return integer;
389
390
391 function fs_truncate(
392 path in varchar2,
393 newlen in number)
394 return integer;
395
396 function fs_truncate(
397 path in varchar2,
398 newlen in number,
399 ret_ino out integer,
400 ret_mode out integer,
401 ret_nlink out integer,
402 ret_uid out integer,
403 ret_gid out integer,
404 ret_size out integer,
405 ret_blksize out integer,
406 ret_blocks out integer,
407 ret_atime out integer,
408 ret_mtime out integer,
409 ret_ctime out integer)
410 return integer;
411
412 function fs_truncate(
413 path in varchar2,
414 newlen in number,
415 ret_ino out integer,
416 ret_mode out integer,
417 ret_nlink out integer,
418 ret_uid out integer,
419 ret_gid out integer,
420 ret_size out integer,
421 ret_blksize out integer,
422 ret_blocks out integer,
423 ret_atime out integer,
424 ret_mtime out integer,
425 ret_ctime out integer,
426 ret_atimens out integer,
427 ret_mtimens out integer,
428 ret_ctimens out integer)
429 return integer;
430
431
432 function fs_utime(
433 path in varchar2,
434 atime in integer,
435 mtime in integer,
436 atimens in integer default 0,
437 mtimens in integer default 0)
438 return integer;
439
440 function fs_utime(
444 ret_ino out integer,
441 path in varchar2,
442 atime in integer,
443 mtime in integer,
445 ret_mode out integer,
446 ret_nlink out integer,
447 ret_uid out integer,
448 ret_gid out integer,
449 ret_size out integer,
450 ret_blksize out integer,
451 ret_blocks out integer,
452 ret_atime out integer,
453 ret_mtime out integer,
454 ret_ctime out integer)
455 return integer;
456
457 function fs_utime(
458 path in varchar2,
459 atime in integer,
460 mtime in integer,
461 atimens in integer,
462 mtimens in integer,
463 ret_ino out integer,
464 ret_mode out integer,
465 ret_nlink out integer,
466 ret_uid out integer,
467 ret_gid out integer,
468 ret_size out integer,
469 ret_blksize out integer,
470 ret_blocks out integer,
471 ret_atime out integer,
472 ret_mtime out integer,
473 ret_ctime out integer,
474 ret_atimens out integer,
475 ret_mtimens out integer,
476 ret_ctimens out integer)
477 return integer;
478
479
480 function fs_open(
481 path in varchar2,
482 content out nocopy blob,
483 forWrite in integer default 0)
484 return integer;
485
486 function fs_open(
487 path in varchar2,
488 content out nocopy blob,
489 forWrite in integer default 0,
490 ret_ino out integer,
491 ret_mode out integer,
492 ret_nlink out integer,
493 ret_uid out integer,
494 ret_gid out integer,
495 ret_size out integer,
496 ret_blksize out integer,
497 ret_blocks out integer,
498 ret_atime out integer,
499 ret_mtime out integer,
500 ret_ctime out integer)
501 return integer;
502
503 function fs_open(
504 path in varchar2,
505 content out nocopy blob,
506 forWrite in integer default 0,
507 ret_ino out integer,
508 ret_mode out integer,
509 ret_nlink out integer,
510 ret_uid out integer,
511 ret_gid out integer,
512 ret_size out integer,
513 ret_blksize out integer,
514 ret_blocks out integer,
515 ret_atime out integer,
516 ret_mtime out integer,
517 ret_ctime out integer,
518 ret_atimens out integer,
519 ret_mtimens out integer,
520 ret_ctimens out integer)
521 return integer;
522
523
524 function fs_read(
525 path in varchar2,
526 buffer out nocopy raw,
527 amount in integer,
528 offset0 in integer)
529 return integer;
530
531 function fs_read(
532 path in varchar2,
533 amount in integer,
534 offset0 in integer,
535 buffers out nocopy dbms_dbfs_content_raw_t)
536 return integer;
537
538
539 function fs_write(
540 path in varchar2,
541 buffer in raw,
542 amount in integer,
543 offset0 in integer)
544 return integer;
545
546 function fs_write(
547 path in varchar2,
548 buffer in raw,
549 amount in integer,
550 offset0 in integer,
551 ret_ino out integer,
552 ret_mode out integer,
553 ret_nlink out integer,
554 ret_uid out integer,
555 ret_gid out integer,
556 ret_size out integer,
557 ret_blksize out integer,
558 ret_blocks out integer,
559 ret_atime out integer,
563
560 ret_mtime out integer,
561 ret_ctime out integer)
562 return integer;
564 function fs_write(
565 path in varchar2,
566 buffer in raw,
567 amount in integer,
568 offset0 in integer,
569 ret_ino out integer,
570 ret_mode out integer,
571 ret_nlink out integer,
572 ret_uid out integer,
573 ret_gid out integer,
574 ret_size out integer,
575 ret_blksize out integer,
576 ret_blocks out integer,
577 ret_atime out integer,
578 ret_mtime out integer,
579 ret_ctime out integer,
580 ret_atimens out integer,
581 ret_mtimens out integer,
582 ret_ctimens out integer)
583 return integer;
584
585 function fs_write(
586 path in varchar2,
587 offset0 in integer,
588 buffers in dbms_dbfs_content_raw_t)
589 return integer;
590
591 function fs_write(
592 path in varchar2,
593 offset0 in integer,
594 buffers in dbms_dbfs_content_raw_t,
595 ret_ino out integer,
596 ret_mode out integer,
597 ret_nlink out integer,
598 ret_uid out integer,
599 ret_gid out integer,
600 ret_size out integer,
601 ret_blksize out integer,
602 ret_blocks out integer,
603 ret_atime out integer,
604 ret_mtime out integer,
605 ret_ctime out integer)
606 return integer;
607
608 function fs_write(
609 path in varchar2,
610 offset0 in integer,
611 buffers in dbms_dbfs_content_raw_t,
612 ret_ino out integer,
613 ret_mode out integer,
614 ret_nlink out integer,
615 ret_uid out integer,
616 ret_gid out integer,
617 ret_size out integer,
618 ret_blksize out integer,
619 ret_blocks out integer,
620 ret_atime out integer,
621 ret_mtime out integer,
622 ret_ctime out integer,
623 ret_atimens out integer,
624 ret_mtimens out integer,
625 ret_ctimens out integer)
626 return integer;
627
628
629 function fs_statfs(
630 path in varchar2,
631 f_bsize out integer,
632 f_frsize out integer,
633 f_blocks out integer,
634 f_bfree out integer,
635 f_bavail out integer,
636 f_files out integer,
637 f_ffree out integer,
638 f_favail out integer,
639 f_fsid out integer,
640 f_flag out integer,
641 f_namemax out integer,
642 useEstimate in integer default 0)
643 return integer;
644
645 function fs_flush(
646 path in varchar2)
647 return integer;
648
649 function fs_release(
650 path in varchar2)
651 return integer;
652
653 function fs_fsync(
654 path in varchar2)
655 return integer;
656
657 function fs_setxattr(
658 path in varchar2,
659 xname in varchar2,
660 xvalue in raw,
661 xflags in integer default 0)
662 return integer;
663
664 function fs_getxattr(
665 path in varchar2,
666 xname in varchar2,
667 xvalue out nocopy raw)
668 return integer;
669
670 function fs_listxattr(
671 path in varchar2)
672 return propnames_t
673 pipelined;
674
675 function fs_removexattr(
676 path in varchar2,
677 xname in varchar2)
678 return integer;
679
680 function fs_opendir(
681 path in varchar2)
682 return integer;
683
684 function fs_readdir(
685 path in varchar2,
689 doFts in integer default 0,
686 withProps in integer default 0,
687 doCursor in integer default 1,
688 doSort in integer default 0,
690 doBulk in integer default 0,
691 doFallback in integer default 0,
692 doRecurse in integer default 0)
693 return dir_entries_t
694 pipelined;
695
696 function fs_releasedir(
697 path in varchar2)
698 return integer;
699
700 function fs_fsyncdir(
701 path in varchar2)
702 return integer;
703
704 function fs_init
705 return integer;
706
707 function fs_destroy
708 return integer;
709
710 function fs_access(
711 path in varchar2,
712 st_mode in integer)
713 return integer;
714
715
716 function fs_creat(
717 path in varchar2,
718 st_mode in integer default MODE_FILE,
719 content out nocopy blob,
720 st_uid in integer default 0,
721 st_gid in integer default 0)
722 return integer;
723
724 function fs_creat(
725 path in varchar2,
726 st_mode in integer default MODE_FILE,
727 content out nocopy blob,
728 st_uid in integer default 0,
729 st_gid in integer default 0,
730 ret_ino out integer,
731 ret_mode out integer,
732 ret_nlink out integer,
733 ret_uid out integer,
734 ret_gid out integer,
735 ret_size out integer,
736 ret_blksize out integer,
737 ret_blocks out integer,
738 ret_atime out integer,
739 ret_mtime out integer,
740 ret_ctime out integer)
741 return integer;
742
743 function fs_creat(
744 path in varchar2,
745 st_mode in integer default MODE_FILE,
746 content out nocopy blob,
747 st_uid in integer default 0,
748 st_gid in integer default 0,
749 ret_ino out integer,
750 ret_mode out integer,
751 ret_nlink out integer,
752 ret_uid out integer,
753 ret_gid out integer,
754 ret_size out integer,
755 ret_blksize out integer,
756 ret_blocks out integer,
757 ret_atime out integer,
758 ret_mtime out integer,
759 ret_ctime out integer,
760 ret_atimens out integer,
761 ret_mtimens out integer,
762 ret_ctimens out integer)
763 return integer;
764
765
766 function fs_ftruncate(
767 path in varchar2,
768 newlen in integer,
769 content in out nocopy blob)
770 return integer;
771
772 function fs_ftruncate(
773 path in varchar2,
774 newlen in integer,
775 content in out nocopy blob,
776 ret_ino out integer,
777 ret_mode out integer,
778 ret_nlink out integer,
779 ret_uid out integer,
780 ret_gid out integer,
781 ret_size out integer,
782 ret_blksize out integer,
783 ret_blocks out integer,
784 ret_atime out integer,
785 ret_mtime out integer,
786 ret_ctime out integer)
787 return integer;
788
789 function fs_ftruncate(
790 path in varchar2,
791 newlen in integer,
792 content in out nocopy blob,
793 ret_ino out integer,
794 ret_mode out integer,
795 ret_nlink out integer,
796 ret_uid out integer,
797 ret_gid out integer,
798 ret_size out integer,
799 ret_blksize out integer,
800 ret_blocks out integer,
801 ret_atime out integer,
802 ret_mtime out integer,
803 ret_ctime out integer,
804 ret_atimens out integer,
808
805 ret_mtimens out integer,
806 ret_ctimens out integer)
807 return integer;
809
810 function fs_fgetattr(
811 path in varchar2,
812 st_ino out integer,
813 st_mode out integer,
814 st_nlink out integer,
815 st_uid out integer,
816 st_gid out integer,
817 st_size out integer,
818 st_blksize out integer,
819 st_blocks out integer,
820 st_atime out integer,
821 st_mtime out integer,
822 st_ctime out integer)
823 return integer;
824
825 function fs_fgetattr(
826 path in varchar2,
827 st_ino out integer,
828 st_mode out integer,
829 st_nlink out integer,
830 st_uid out integer,
831 st_gid out integer,
832 st_size out integer,
833 st_blksize out integer,
834 st_blocks out integer,
835 st_atime out integer,
836 st_mtime out integer,
837 st_ctime out integer,
838 st_atimens out integer,
839 st_mtimens out integer,
840 st_ctimens out integer)
841 return integer;
842
843
844 /* lookup acceleration view: see dbms_dbfs_content.getattr_view */
845 procedure fs_getattr_view(
846 path in varchar2,
847 prefix out nocopy varchar2,
848 view_name out nocopy varchar2);
849 end;