Code Monkey home page Code Monkey logo

riofs's People

Contributors

akatrevorjay avatar bfleischer avatar garthsnyder avatar henningpeters avatar meinharrd avatar nopjmp avatar thepythoniccow avatar vincentbernat avatar wizzard avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

riofs's Issues

AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY

Amazon itself is using AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY instead of AWSACCESSKEYID and AWSSECRETACCESSKEY for the officially supported CLI tools as environment variables.

Renaming folder

Hi, I've found another issue. It's not possible to rename a folder using the mv command in ubuntu. It's a normal behaviour? Otherwise, it's possible to copy a folder and delete the old one after but it's not the best solution. Thank you!

problem with subdirectories

In our test bucket there is a subdirectory "epubtest".
If I do a ls on the root first, and then on the subdirectory, things work ok:
ls mnt
ls mnt/epubtest

However if I directly do a
ls mnt/epubtest
right after the server was started, I get:
ls: cannot access mnt/epubtest: No such file or directory

fstab mount ignores config file

Hi,

I'm trying to mount with fstab but it's not reading the config file passed.

Here is my mount string:
riofs#bucket-name /mnt/bucket-name fuse _netdev,allow_other,nonempty,config=/path/to/riofs.conf.xml 0 0

When trying to mount:
ERROR! Environment variables are not set! Try riofs --help' for more information.`

Any help would be much appreciated.

Thanks!

is there any RRS support?

Dear Author,

RioFS is greater than s3fs in non-root user permission handling :)

However, it seems not yet support RRS now.

Do you plan to add this feature?

This is a nice project after all~

Collecting ideas for stats server

I would like to implement those features that are covered by real-work use cases and not otherwise covered. I.e., I would explicitly exclude all statistics that S3 collects anyway via its logging feature.

My use case are:

  • check what and whether it is running (stable)?
  • is it fast (enough)?
  • how can I tune the configuration?
  • can I find bugs?

Here is an overview about all things that came to my mind that could get logged (not everything has a clear use case, though).

  1. operational information
  • connected endpoint
  • configuration options
  • versioning
  • security settings
  • compile flags
  • version info
  • uptime
  1. statistics on each S3 request type
  • S3 ListBucket
  • S3 GetObject
    etc.

by number of requests, sent bytes, received bytes, number of internal errors/error codes, number of retries/failures

  1. aggregate statistics on S3 requests
  • total number of requests
  • total sent bytes
  • total received bytes
  • average latency (incl. cache)
  1. cache statistics
  • size (bytes)
  • number of entries
  • number of hits
  • number of misses
  • hit/miss ratio
  1. FUSE statistics
  • number of requests by type (mkdir, forget, listxattr, etc.)
  1. real-time information
  • info on last X FUSE requests
  • info on last X S3 requests
  • info on X most frequently accessed cache items

compiler warnings

I am getting a dozen compiler warnings when compiling RioFS on MacOSX 10.9:

For example:

dir_tree.c:1392:103: warning: format specifies type 'long' but the argument has type 'off_t' (aka 'long long')
      [-Wformat]
    LOG_debug (DIR_TREE_LOG, INO_FOP_H"Read inode, size: %zu, off: %"OFF_FMT, INO_T (ino), fop, size, off);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../include/log.h:40:73: note: expanded from macro 'LOG_debug'
    logger_log_msg (__FILE__, __LINE__, __func__, LOG_debug, subsystem, x); \

or:

rfuse.c:466:93: warning: format specifies type 'long' but the argument has type 'off_t' (aka 'long long') [-Wformat]
    LOG_debug (FUSE_LOG, INO_H"readdir inode, size: %zu, off: %"OFF_FMT, INO_T (ino), size, off);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../include/log.h:40:73: note: expanded from macro 'LOG_debug'
    logger_log_msg (__FILE__, __LINE__, __func__, LOG_debug, subsystem, x); \

For a full log check this build log: https://travis-ci.org/skoobe/riofs/builds/15460002

Environment variables error

Hi,

I was able to get riofs working right after I installed, but after a ec2 reboot I'm no longer able to get the riofs command to work without encountering the following error:
07:43:34 [main](main main.c:831) Environment variables are not set!

I used the command export AWS_ACCESS_KEY_ID="" and export AWS_SECRET_ACCESS_KEY="", and was even able to echo out the values of both. But when I ran riofs --uid 1001 s3bucketname /mnt/s3, I got the error listed above.

Then I tried adding those keys to config file and tried running the command like this:
riofs -c ~/.config/riofs/riofs.conf.xml --uid 1001 s3bucketname /mnt/s3

But still got the same error listed above. I'm pretty confused and stuck now, any ideas?

The account I'm running the commands from has access to sudo and here are the permissions on the config file:
-rwxrwxrwx 1 root root 4384 Dec 7 07:03 ~/.config/riofs/riofs.conf.xml

Disappearing cache?

So here's what I do:

  • Start riofs by running exec /usr/bin/riofs [options, directory, etc](in upstart)
  • Check my mounted directory. It's empty
  • Check my mounted directory again after a few minutes. The files are cached now.
  • Check my mounted directory after 24 hours. The directory is empty

What might cause this?

I'm assuming that when the server is restarted, the directory is wiped of the cached files, right?

One thing I can think of is that it's an issue with my server and my upstart script.

If my server restarts overnight or something, and the upstart script doesn't run successfully, the cache will be emptied. However, I'm not seeing any alerts that the server ever went down.

I also manually rebooted my main server and observed that the mounted directory wasn't empty when it came back up, so my upstart script appears to be working correctly

Files and directories with whitespace in name cause problems

  • directories

ls -la xxx\ yyy
xxx yyy:
ls: reading directory xxx yyy: Not a directory
total 0

Also, creating files within that directory seems not possible.

  • files

creating files with whitespace characters don't get created

AWS S3 docs state that keys should be encoded in UTF-8:

The name for a key is a sequence of Unicode characters
whose UTF-8 encoding is at most 1024 bytes long.

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html

Default permission and owner on RioFS

Hi, I'm new the RioFS but it's seems to be a beautiful peace of software from my test. I search to be able to put by default some other permission on files inside S3. I've tried some fuse options when I mounted it but without success. It's always root that own the folders and files and the default permission (755 if I remember well) is set. I want to be able to change the default permission and owner. I tried chmod and chown and these two done nothing... Maybe it's a misconfiguration only or really a RioFS issue. Here is my mount line:

riofs -o "allow_root,uid=33,gid=33" -c ~/.config/riofs/riofs.conf.xml --cache-dir /tmp s3bucketname /mnt/s3/

I'm using ubuntu 12.04. Does someone else face this issue?

autoconf generated files should be removed from the repository

The files generated by autoconf should not be part of the repository.
They show up in git status like this:

   modified:   Makefile.in
   modified:   aclocal.m4
   modified:   configure
   modified:   include/Makefile.in
   modified:   src/Makefile.in
   modified:   tests/Makefile.in

Allow chmod to set S3 ACLs.

From what I understand, riofs doesn't currently set ACLs, which is a core part of my S3 use case. It would be good if the POSIX ugo attributes were mapped to the S3 owner, authenticated user, everyone groups, so we could do chmod r+o myfile to make the file world-readable.

No targets specified and no makefile found.

Following the instructions i struggle at the point when executing the "make" command where the console complains with "... No targets specified and no makefile found...."
I'm a linux beginner - maby i forgot something essential. hopefully someone can help me ..

side notes:
I'm using a bitnami LAMP Stack 5.4.25-1 (Ubuntu LTS 12.04 64-bit) inside a virtual box vm. https://bitnami.com/stack/lamp/virtual-machine

Improvement: ability to use S3 folder instead of root

First, let me tell I am really happy with riofs. I am complete linux-noob, yet I managed to install riofs in <30mins. And it just works! Love it!

But the problem is that riofs uses root folder of S3. I have a program written in Symfony2 that also needs to use S3 for assets like javascripts, css, user-uploaded images... and those do not need to be shared among EC2 instances. But some other things in that program needs to be shared, not everything.

So far, the only solution would be to have 2 S3 servers which I think is not really good. Am I missing something in the docs or this feature doesn't exist?

Again, thanks for this great program.

No riofs binary on make

Hi,

Don't know if I'm missing something. I built on CentOS 6.5 as per the (6.2) instructions, there were no errors I can see in make or make install, yet there's no riofs binary. Am I being stupid or is something wrong?

make output below:
[root@archiver1 libevent-2.0.21-stable]# make
make all-recursive
make[1]: Entering directory /root/libevent-2.0.21-stable' Making all in . make[2]: Entering directory/root/libevent-2.0.21-stable'
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT event.lo -MD -MP -MF .deps/event.Tpo -c -o event.lo event.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT event.lo -MD -MP -MF .deps/event.Tpo -c event.c -fPIC -DPIC -o .libs/event.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT event.lo -MD -MP -MF .deps/event.Tpo -c event.c -o event.o >/dev/null 2>&1
mv -f .deps/event.Tpo .deps/event.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evthread.lo -MD -MP -MF .deps/evthread.Tpo -c -o evthread.lo evthread.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evthread.lo -MD -MP -MF .deps/evthread.Tpo -c evthread.c -fPIC -DPIC -o .libs/evthread.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evthread.lo -MD -MP -MF .deps/evthread.Tpo -c evthread.c -o evthread.o >/dev/null 2>&1
mv -f .deps/evthread.Tpo .deps/evthread.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT buffer.lo -MD -MP -MF .deps/buffer.Tpo -c -o buffer.lo buffer.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT buffer.lo -MD -MP -MF .deps/buffer.Tpo -c buffer.c -fPIC -DPIC -o .libs/buffer.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT buffer.lo -MD -MP -MF .deps/buffer.Tpo -c buffer.c -o buffer.o >/dev/null 2>&1
mv -f .deps/buffer.Tpo .deps/buffer.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent.lo -MD -MP -MF .deps/bufferevent.Tpo -c -o bufferevent.lo bufferevent.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent.lo -MD -MP -MF .deps/bufferevent.Tpo -c bufferevent.c -fPIC -DPIC -o .libs/bufferevent.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent.lo -MD -MP -MF .deps/bufferevent.Tpo -c bufferevent.c -o bufferevent.o >/dev/null 2>&1
mv -f .deps/bufferevent.Tpo .deps/bufferevent.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_sock.lo -MD -MP -MF .deps/bufferevent_sock.Tpo -c -o bufferevent_sock.lo bufferevent_sock.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_sock.lo -MD -MP -MF .deps/bufferevent_sock.Tpo -c bufferevent_sock.c -fPIC -DPIC -o .libs/bufferevent_sock.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_sock.lo -MD -MP -MF .deps/bufferevent_sock.Tpo -c bufferevent_sock.c -o bufferevent_sock.o >/dev/null 2>&1
mv -f .deps/bufferevent_sock.Tpo .deps/bufferevent_sock.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_filter.lo -MD -MP -MF .deps/bufferevent_filter.Tpo -c -o bufferevent_filter.lo bufferevent_filter.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_filter.lo -MD -MP -MF .deps/bufferevent_filter.Tpo -c bufferevent_filter.c -fPIC -DPIC -o .libs/bufferevent_filter.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_filter.lo -MD -MP -MF .deps/bufferevent_filter.Tpo -c bufferevent_filter.c -o bufferevent_filter.o >/dev/null 2>&1
mv -f .deps/bufferevent_filter.Tpo .deps/bufferevent_filter.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_pair.lo -MD -MP -MF .deps/bufferevent_pair.Tpo -c -o bufferevent_pair.lo bufferevent_pair.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_pair.lo -MD -MP -MF .deps/bufferevent_pair.Tpo -c bufferevent_pair.c -fPIC -DPIC -o .libs/bufferevent_pair.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_pair.lo -MD -MP -MF .deps/bufferevent_pair.Tpo -c bufferevent_pair.c -o bufferevent_pair.o >/dev/null 2>&1
mv -f .deps/bufferevent_pair.Tpo .deps/bufferevent_pair.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT listener.lo -MD -MP -MF .deps/listener.Tpo -c -o listener.lo listener.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT listener.lo -MD -MP -MF .deps/listener.Tpo -c listener.c -fPIC -DPIC -o .libs/listener.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT listener.lo -MD -MP -MF .deps/listener.Tpo -c listener.c -o listener.o >/dev/null 2>&1
mv -f .deps/listener.Tpo .deps/listener.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_ratelim.lo -MD -MP -MF .deps/bufferevent_ratelim.Tpo -c -o bufferevent_ratelim.lo bufferevent_ratelim.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_ratelim.lo -MD -MP -MF .deps/bufferevent_ratelim.Tpo -c bufferevent_ratelim.c -fPIC -DPIC -o .libs/bufferevent_ratelim.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_ratelim.lo -MD -MP -MF .deps/bufferevent_ratelim.Tpo -c bufferevent_ratelim.c -o bufferevent_ratelim.o >/dev/null 2>&1
mv -f .deps/bufferevent_ratelim.Tpo .deps/bufferevent_ratelim.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evmap.lo -MD -MP -MF .deps/evmap.Tpo -c -o evmap.lo evmap.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evmap.lo -MD -MP -MF .deps/evmap.Tpo -c evmap.c -fPIC -DPIC -o .libs/evmap.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evmap.lo -MD -MP -MF .deps/evmap.Tpo -c evmap.c -o evmap.o >/dev/null 2>&1
mv -f .deps/evmap.Tpo .deps/evmap.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT log.lo -MD -MP -MF .deps/log.Tpo -c -o log.lo log.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT log.lo -MD -MP -MF .deps/log.Tpo -c log.c -fPIC -DPIC -o .libs/log.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT log.lo -MD -MP -MF .deps/log.Tpo -c log.c -o log.o >/dev/null 2>&1
mv -f .deps/log.Tpo .deps/log.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evutil.lo -MD -MP -MF .deps/evutil.Tpo -c -o evutil.lo evutil.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evutil.lo -MD -MP -MF .deps/evutil.Tpo -c evutil.c -fPIC -DPIC -o .libs/evutil.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evutil.lo -MD -MP -MF .deps/evutil.Tpo -c evutil.c -o evutil.o >/dev/null 2>&1
mv -f .deps/evutil.Tpo .deps/evutil.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evutil_rand.lo -MD -MP -MF .deps/evutil_rand.Tpo -c -o evutil_rand.lo evutil_rand.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evutil_rand.lo -MD -MP -MF .deps/evutil_rand.Tpo -c evutil_rand.c -fPIC -DPIC -o .libs/evutil_rand.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evutil_rand.lo -MD -MP -MF .deps/evutil_rand.Tpo -c evutil_rand.c -o evutil_rand.o >/dev/null 2>&1
mv -f .deps/evutil_rand.Tpo .deps/evutil_rand.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT strlcpy.lo -MD -MP -MF .deps/strlcpy.Tpo -c -o strlcpy.lo strlcpy.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT strlcpy.lo -MD -MP -MF .deps/strlcpy.Tpo -c strlcpy.c -fPIC -DPIC -o .libs/strlcpy.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT strlcpy.lo -MD -MP -MF .deps/strlcpy.Tpo -c strlcpy.c -o strlcpy.o >/dev/null 2>&1
mv -f .deps/strlcpy.Tpo .deps/strlcpy.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT select.lo -MD -MP -MF .deps/select.Tpo -c -o select.lo select.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT select.lo -MD -MP -MF .deps/select.Tpo -c select.c -fPIC -DPIC -o .libs/select.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT select.lo -MD -MP -MF .deps/select.Tpo -c select.c -o select.o >/dev/null 2>&1
mv -f .deps/select.Tpo .deps/select.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT poll.lo -MD -MP -MF .deps/poll.Tpo -c -o poll.lo poll.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT poll.lo -MD -MP -MF .deps/poll.Tpo -c poll.c -fPIC -DPIC -o .libs/poll.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT poll.lo -MD -MP -MF .deps/poll.Tpo -c poll.c -o poll.o >/dev/null 2>&1
mv -f .deps/poll.Tpo .deps/poll.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT epoll.lo -MD -MP -MF .deps/epoll.Tpo -c -o epoll.lo epoll.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT epoll.lo -MD -MP -MF .deps/epoll.Tpo -c epoll.c -fPIC -DPIC -o .libs/epoll.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT epoll.lo -MD -MP -MF .deps/epoll.Tpo -c epoll.c -o epoll.o >/dev/null 2>&1
mv -f .deps/epoll.Tpo .deps/epoll.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT signal.lo -MD -MP -MF .deps/signal.Tpo -c -o signal.lo signal.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT signal.lo -MD -MP -MF .deps/signal.Tpo -c signal.c -fPIC -DPIC -o .libs/signal.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT signal.lo -MD -MP -MF .deps/signal.Tpo -c signal.c -o signal.o >/dev/null 2>&1
mv -f .deps/signal.Tpo .deps/signal.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT event_tagging.lo -MD -MP -MF .deps/event_tagging.Tpo -c -o event_tagging.lo event_tagging.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT event_tagging.lo -MD -MP -MF .deps/event_tagging.Tpo -c event_tagging.c -fPIC -DPIC -o .libs/event_tagging.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT event_tagging.lo -MD -MP -MF .deps/event_tagging.Tpo -c event_tagging.c -o event_tagging.o >/dev/null 2>&1
mv -f .deps/event_tagging.Tpo .deps/event_tagging.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT http.lo -MD -MP -MF .deps/http.Tpo -c -o http.lo http.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT http.lo -MD -MP -MF .deps/http.Tpo -c http.c -fPIC -DPIC -o .libs/http.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT http.lo -MD -MP -MF .deps/http.Tpo -c http.c -o http.o >/dev/null 2>&1
mv -f .deps/http.Tpo .deps/http.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evdns.lo -MD -MP -MF .deps/evdns.Tpo -c -o evdns.lo evdns.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evdns.lo -MD -MP -MF .deps/evdns.Tpo -c evdns.c -fPIC -DPIC -o .libs/evdns.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evdns.lo -MD -MP -MF .deps/evdns.Tpo -c evdns.c -o evdns.o >/dev/null 2>&1
mv -f .deps/evdns.Tpo .deps/evdns.Plo
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evrpc.lo -MD -MP -MF .deps/evrpc.Tpo -c -o evrpc.lo evrpc.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evrpc.lo -MD -MP -MF .deps/evrpc.Tpo -c evrpc.c -fPIC -DPIC -o .libs/evrpc.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evrpc.lo -MD -MP -MF .deps/evrpc.Tpo -c evrpc.c -o evrpc.o >/dev/null 2>&1
mv -f .deps/evrpc.Tpo .deps/evrpc.Plo
/bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -version-info 6:9:1 -release 2.0 -o libevent.la -rpath /usr/local/lib event.lo evthread.lo buffer.lo bufferevent.lo bufferevent_sock.lo bufferevent_filter.lo bufferevent_pair.lo listener.lo bufferevent_ratelim.lo evmap.lo log.lo evutil.lo evutil_rand.lo strlcpy.lo select.lo poll.lo epoll.lo signal.lo event_tagging.lo http.lo evdns.lo evrpc.lo -lrt
libtool: link: gcc -shared -fPIC -DPIC .libs/event.o .libs/evthread.o .libs/buffer.o .libs/bufferevent.o .libs/bufferevent_sock.o .libs/bufferevent_filter.o .libs/bufferevent_pair.o .libs/listener.o .libs/bufferevent_ratelim.o .libs/evmap.o .libs/log.o .libs/evutil.o .libs/evutil_rand.o .libs/strlcpy.o .libs/select.o .libs/poll.o .libs/epoll.o .libs/signal.o .libs/event_tagging.o .libs/http.o .libs/evdns.o .libs/evrpc.o -lrt -O2 -Wl,-soname -Wl,libevent-2.0.so.5 -o .libs/libevent-2.0.so.5.1.9
libtool: link: (cd ".libs" && rm -f "libevent-2.0.so.5" && ln -s "libevent-2.0.so.5.1.9" "libevent-2.0.so.5")
libtool: link: (cd ".libs" && rm -f "libevent.so" && ln -s "libevent-2.0.so.5.1.9" "libevent.so")
libtool: link: ar cru .libs/libevent.a event.o evthread.o buffer.o bufferevent.o bufferevent_sock.o bufferevent_filter.o bufferevent_pair.o listener.o bufferevent_ratelim.o evmap.o log.o evutil.o evutil_rand.o strlcpy.o select.o poll.o epoll.o signal.o event_tagging.o http.o evdns.o evrpc.o
libtool: link: ranlib .libs/libevent.a
libtool: link: ( cd ".libs" && rm -f "libevent.la" && ln -s "../libevent.la" "libevent.la" )
/bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -version-info 6:9:1 -release 2.0 -o libevent_core.la -rpath /usr/local/lib event.lo evthread.lo buffer.lo bufferevent.lo bufferevent_sock.lo bufferevent_filter.lo bufferevent_pair.lo listener.lo bufferevent_ratelim.lo evmap.lo log.lo evutil.lo evutil_rand.lo strlcpy.lo select.lo poll.lo epoll.lo signal.lo -lrt
libtool: link: gcc -shared -fPIC -DPIC .libs/event.o .libs/evthread.o .libs/buffer.o .libs/bufferevent.o .libs/bufferevent_sock.o .libs/bufferevent_filter.o .libs/bufferevent_pair.o .libs/listener.o .libs/bufferevent_ratelim.o .libs/evmap.o .libs/log.o .libs/evutil.o .libs/evutil_rand.o .libs/strlcpy.o .libs/select.o .libs/poll.o .libs/epoll.o .libs/signal.o -lrt -O2 -Wl,-soname -Wl,libevent_core-2.0.so.5 -o .libs/libevent_core-2.0.so.5.1.9
libtool: link: (cd ".libs" && rm -f "libevent_core-2.0.so.5" && ln -s "libevent_core-2.0.so.5.1.9" "libevent_core-2.0.so.5")
libtool: link: (cd ".libs" && rm -f "libevent_core.so" && ln -s "libevent_core-2.0.so.5.1.9" "libevent_core.so")
libtool: link: ar cru .libs/libevent_core.a event.o evthread.o buffer.o bufferevent.o bufferevent_sock.o bufferevent_filter.o bufferevent_pair.o listener.o bufferevent_ratelim.o evmap.o log.o evutil.o evutil_rand.o strlcpy.o select.o poll.o epoll.o signal.o
libtool: link: ranlib .libs/libevent_core.a
libtool: link: ( cd ".libs" && rm -f "libevent_core.la" && ln -s "../libevent_core.la" "libevent_core.la" )
/bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -version-info 6:9:1 -release 2.0 -o libevent_extra.la -rpath /usr/local/lib event_tagging.lo http.lo evdns.lo evrpc.lo -lrt
libtool: link: gcc -shared -fPIC -DPIC .libs/event_tagging.o .libs/http.o .libs/evdns.o .libs/evrpc.o -lrt -O2 -Wl,-soname -Wl,libevent_extra-2.0.so.5 -o .libs/libevent_extra-2.0.so.5.1.9
libtool: link: (cd ".libs" && rm -f "libevent_extra-2.0.so.5" && ln -s "libevent_extra-2.0.so.5.1.9" "libevent_extra-2.0.so.5")
libtool: link: (cd ".libs" && rm -f "libevent_extra.so" && ln -s "libevent_extra-2.0.so.5.1.9" "libevent_extra.so")
libtool: link: ar cru .libs/libevent_extra.a event_tagging.o http.o evdns.o evrpc.o
libtool: link: ranlib .libs/libevent_extra.a
libtool: link: ( cd ".libs" && rm -f "libevent_extra.la" && ln -s "../libevent_extra.la" "libevent_extra.la" )
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evthread_pthread.lo -MD -MP -MF .deps/evthread_pthread.Tpo -c -o evthread_pthread.lo evthread_pthread.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evthread_pthread.lo -MD -MP -MF .deps/evthread_pthread.Tpo -c evthread_pthread.c -fPIC -DPIC -o .libs/evthread_pthread.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT evthread_pthread.lo -MD -MP -MF .deps/evthread_pthread.Tpo -c evthread_pthread.c -o evthread_pthread.o >/dev/null 2>&1
mv -f .deps/evthread_pthread.Tpo .deps/evthread_pthread.Plo
/bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -version-info 6:9:1 -release 2.0 -o libevent_pthreads.la -rpath /usr/local/lib evthread_pthread.lo -lrt
libtool: link: gcc -shared -fPIC -DPIC .libs/evthread_pthread.o -lrt -O2 -Wl,-soname -Wl,libevent_pthreads-2.0.so.5 -o .libs/libevent_pthreads-2.0.so.5.1.9
libtool: link: (cd ".libs" && rm -f "libevent_pthreads-2.0.so.5" && ln -s "libevent_pthreads-2.0.so.5.1.9" "libevent_pthreads-2.0.so.5")
libtool: link: (cd ".libs" && rm -f "libevent_pthreads.so" && ln -s "libevent_pthreads-2.0.so.5.1.9" "libevent_pthreads.so")
libtool: link: ar cru .libs/libevent_pthreads.a evthread_pthread.o
libtool: link: ranlib .libs/libevent_pthreads.a
libtool: link: ( cd ".libs" && rm -f "libevent_pthreads.la" && ln -s "../libevent_pthreads.la" "libevent_pthreads.la" )
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_openssl.lo -MD -MP -MF .deps/bufferevent_openssl.Tpo -c -o bufferevent_openssl.lo bufferevent_openssl.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_openssl.lo -MD -MP -MF .deps/bufferevent_openssl.Tpo -c bufferevent_openssl.c -fPIC -DPIC -o .libs/bufferevent_openssl.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./compat -I./include -I./include -g -O2 -Wall -fno-strict-aliasing -MT bufferevent_openssl.lo -MD -MP -MF .deps/bufferevent_openssl.Tpo -c bufferevent_openssl.c -o bufferevent_openssl.o >/dev/null 2>&1
mv -f .deps/bufferevent_openssl.Tpo .deps/bufferevent_openssl.Plo
/bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -version-info 6:9:1 -release 2.0 -o libevent_openssl.la -rpath /usr/local/lib bufferevent_openssl.lo -lssl -lcrypto -lrt
libtool: link: gcc -shared -fPIC -DPIC .libs/bufferevent_openssl.o -lssl -lcrypto -lrt -O2 -Wl,-soname -Wl,libevent_openssl-2.0.so.5 -o .libs/libevent_openssl-2.0.so.5.1.9
libtool: link: (cd ".libs" && rm -f "libevent_openssl-2.0.so.5" && ln -s "libevent_openssl-2.0.so.5.1.9" "libevent_openssl-2.0.so.5")
libtool: link: (cd ".libs" && rm -f "libevent_openssl.so" && ln -s "libevent_openssl-2.0.so.5.1.9" "libevent_openssl.so")
libtool: link: ar cru .libs/libevent_openssl.a bufferevent_openssl.o
libtool: link: ranlib .libs/libevent_openssl.a
libtool: link: ( cd ".libs" && rm -f "libevent_openssl.la" && ln -s "../libevent_openssl.la" "libevent_openssl.la" )
make[2]: Leaving directory /root/libevent-2.0.21-stable' Making all in include make[2]: Entering directory/root/libevent-2.0.21-stable/include'
make[2]: Nothing to be done for all'. make[2]: Leaving directory/root/libevent-2.0.21-stable/include'
Making all in sample
make[2]: Entering directory /root/libevent-2.0.21-stable/sample' gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c event-test.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o event-test event-test.o ../libevent.la -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/event-test event-test.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c time-test.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o time-test time-test.o ../libevent.la -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/time-test time-test.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c signal-test.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o signal-test signal-test.o ../libevent.la -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/signal-test signal-test.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c dns-example.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o dns-example dns-example.o ../libevent.la -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/dns-example dns-example.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c hello-world.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o hello-world hello-world.o ../libevent.la -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/hello-world hello-world.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c http-server.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o http-server http-server.o ../libevent.la -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/http-server http-server.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -g -O2 -Wall -fno-strict-aliasing -c le-proxy.c /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o le-proxy le-proxy.o ../libevent.la ../libevent_openssl.la -lssl -lcrypto -lrt libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/le-proxy le-proxy.o ../.libs/libevent.so ../.libs/libevent_openssl.so -lssl -lcrypto -lrt -Wl,-rpath -Wl,/usr/local/lib make[2]: Leaving directory/root/libevent-2.0.21-stable/sample'
Making all in test
make[2]: Entering directory /root/libevent-2.0.21-stable/test' date -u > rpcgen-attempted if ./rpcgen_wrapper.sh .; then \ echo "rpcgen okay"; \ else \ echo "No Python installed; stubbing out RPC test." >&2; \ echo " "> regress.gen.c; \ echo "#define NO_PYTHON_EXISTS" > regress.gen.h; \ fi Reading "./regress.rpc" Created struct: msg Added entry: from_name Added entry: to_name Added entry: attack Added entry: run Created struct: kill Added entry: weapon Added entry: action Added entry: how_often Created struct: run Added entry: how Added entry: some_bytes Added entry: fixed_bytes Added entry: notes Added entry: large_number Added entry: other_numbers ... creating "./regress.gen.h" ... creating "./regress.gen.c" Updated .\regress.gen.c and .\regress.gen.h rpcgen okay make all-am make[3]: Entering directory/root/libevent-2.0.21-stable/test'
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT test-init.o -MD -MP -MF .deps/test-init.Tpo -c -o test-init.o test-init.c
mv -f .deps/test-init.Tpo .deps/test-init.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o test-init test-init.o ../libevent_core.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/test-init test-init.o ../.libs/libevent_core.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT test-eof.o -MD -MP -MF .deps/test-eof.Tpo -c -o test-eof.o test-eof.c
mv -f .deps/test-eof.Tpo .deps/test-eof.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o test-eof test-eof.o ../libevent_core.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/test-eof test-eof.o ../.libs/libevent_core.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT test-weof.o -MD -MP -MF .deps/test-weof.Tpo -c -o test-weof.o test-weof.c
mv -f .deps/test-weof.Tpo .deps/test-weof.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o test-weof test-weof.o ../libevent_core.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/test-weof test-weof.o ../.libs/libevent_core.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT test-time.o -MD -MP -MF .deps/test-time.Tpo -c -o test-time.o test-time.c
mv -f .deps/test-time.Tpo .deps/test-time.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o test-time test-time.o ../libevent_core.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/test-time test-time.o ../.libs/libevent_core.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT bench.o -MD -MP -MF .deps/bench.Tpo -c -o bench.o bench.c
mv -f .deps/bench.Tpo .deps/bench.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o bench bench.o ../libevent.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/bench bench.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT bench_cascade.o -MD -MP -MF .deps/bench_cascade.Tpo -c -o bench_cascade.o bench_cascade.c
mv -f .deps/bench_cascade.Tpo .deps/bench_cascade.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o bench_cascade bench_cascade.o ../libevent.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/bench_cascade bench_cascade.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT bench_http.o -MD -MP -MF .deps/bench_http.Tpo -c -o bench_http.o bench_http.c
mv -f .deps/bench_http.Tpo .deps/bench_http.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o bench_http bench_http.o ../libevent.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/bench_http bench_http.o ../.libs/libevent.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT bench_httpclient.o -MD -MP -MF .deps/bench_httpclient.Tpo -c -o bench_httpclient.o bench_httpclient.c
mv -f .deps/bench_httpclient.Tpo .deps/bench_httpclient.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o bench_httpclient bench_httpclient.o ../libevent_core.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/bench_httpclient bench_httpclient.o ../.libs/libevent_core.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT test-ratelim.o -MD -MP -MF .deps/test-ratelim.Tpo -c -o test-ratelim.o test-ratelim.c
mv -f .deps/test-ratelim.Tpo .deps/test-ratelim.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o test-ratelim test-ratelim.o ../libevent_core.la -lm -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/test-ratelim test-ratelim.o ../.libs/libevent_core.so -lm -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT test-changelist.o -MD -MP -MF .deps/test-changelist.Tpo -c -o test-changelist.o test-changelist.c
mv -f .deps/test-changelist.Tpo .deps/test-changelist.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o test-changelist test-changelist.o ../libevent_core.la -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/test-changelist test-changelist.o ../.libs/libevent_core.so -lrt -Wl,-rpath -Wl,/usr/local/lib
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress.o -MD -MP -MF .deps/regress-regress.Tpo -c -o regress-regress.o test -f 'regress.c' || echo './'regress.c
mv -f .deps/regress-regress.Tpo .deps/regress-regress.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_buffer.o -MD -MP -MF .deps/regress-regress_buffer.Tpo -c -o regress-regress_buffer.o test -f 'regress_buffer.c' || echo './'regress_buffer.c
mv -f .deps/regress-regress_buffer.Tpo .deps/regress-regress_buffer.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_http.o -MD -MP -MF .deps/regress-regress_http.Tpo -c -o regress-regress_http.o test -f 'regress_http.c' || echo './'regress_http.c
mv -f .deps/regress-regress_http.Tpo .deps/regress-regress_http.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_dns.o -MD -MP -MF .deps/regress-regress_dns.Tpo -c -o regress-regress_dns.o test -f 'regress_dns.c' || echo './'regress_dns.c
mv -f .deps/regress-regress_dns.Tpo .deps/regress-regress_dns.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_testutils.o -MD -MP -MF .deps/regress-regress_testutils.Tpo -c -o regress-regress_testutils.o test -f 'regress_testutils.c' || echo './'regress_testutils.c
mv -f .deps/regress-regress_testutils.Tpo .deps/regress-regress_testutils.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_rpc.o -MD -MP -MF .deps/regress-regress_rpc.Tpo -c -o regress-regress_rpc.o test -f 'regress_rpc.c' || echo './'regress_rpc.c
mv -f .deps/regress-regress_rpc.Tpo .deps/regress-regress_rpc.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress.gen.o -MD -MP -MF .deps/regress-regress.gen.Tpo -c -o regress-regress.gen.o test -f 'regress.gen.c' || echo './'regress.gen.c
mv -f .deps/regress-regress.gen.Tpo .deps/regress-regress.gen.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_et.o -MD -MP -MF .deps/regress-regress_et.Tpo -c -o regress-regress_et.o test -f 'regress_et.c' || echo './'regress_et.c
mv -f .deps/regress-regress_et.Tpo .deps/regress-regress_et.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_bufferevent.o -MD -MP -MF .deps/regress-regress_bufferevent.Tpo -c -o regress-regress_bufferevent.o test -f 'regress_bufferevent.c' || echo './'regress_bufferevent.c
mv -f .deps/regress-regress_bufferevent.Tpo .deps/regress-regress_bufferevent.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_listener.o -MD -MP -MF .deps/regress-regress_listener.Tpo -c -o regress-regress_listener.o test -f 'regress_listener.c' || echo './'regress_listener.c
mv -f .deps/regress-regress_listener.Tpo .deps/regress-regress_listener.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_util.o -MD -MP -MF .deps/regress-regress_util.Tpo -c -o regress-regress_util.o test -f 'regress_util.c' || echo './'regress_util.c
mv -f .deps/regress-regress_util.Tpo .deps/regress-regress_util.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-tinytest.o -MD -MP -MF .deps/regress-tinytest.Tpo -c -o regress-tinytest.o test -f 'tinytest.c' || echo './'tinytest.c
mv -f .deps/regress-tinytest.Tpo .deps/regress-tinytest.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_main.o -MD -MP -MF .deps/regress-regress_main.Tpo -c -o regress-regress_main.o test -f 'regress_main.c' || echo './'regress_main.c
mv -f .deps/regress-regress_main.Tpo .deps/regress-regress_main.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_minheap.o -MD -MP -MF .deps/regress-regress_minheap.Tpo -c -o regress-regress_minheap.o test -f 'regress_minheap.c' || echo './'regress_minheap.c
mv -f .deps/regress-regress_minheap.Tpo .deps/regress-regress_minheap.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_thread.o -MD -MP -MF .deps/regress-regress_thread.Tpo -c -o regress-regress_thread.o test -f 'regress_thread.c' || echo './'regress_thread.c
mv -f .deps/regress-regress_thread.Tpo .deps/regress-regress_thread.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_zlib.o -MD -MP -MF .deps/regress-regress_zlib.Tpo -c -o regress-regress_zlib.o test -f 'regress_zlib.c' || echo './'regress_zlib.c
mv -f .deps/regress-regress_zlib.Tpo .deps/regress-regress_zlib.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../compat -I../include -I../include -DTINYTEST_LOCAL -g -O2 -Wall -fno-strict-aliasing -MT regress-regress_ssl.o -MD -MP -MF .deps/regress-regress_ssl.Tpo -c -o regress-regress_ssl.o test -f 'regress_ssl.c' || echo './'regress_ssl.c
mv -f .deps/regress-regress_ssl.Tpo .deps/regress-regress_ssl.Po
/bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -Wall -fno-strict-aliasing -o regress regress-regress.o regress-regress_buffer.o regress-regress_http.o regress-regress_dns.o regress-regress_testutils.o regress-regress_rpc.o regress-regress.gen.o regress-regress_et.o regress-regress_bufferevent.o regress-regress_listener.o regress-regress_util.o regress-tinytest.o regress-regress_main.o regress-regress_minheap.o regress-regress_thread.o regress-regress_zlib.o regress-regress_ssl.o ../libevent.la ../libevent_pthreads.la -lz ../libevent_openssl.la -lssl -lcrypto -lrt
libtool: link: gcc -g -O2 -Wall -fno-strict-aliasing -o .libs/regress regress-regress.o regress-regress_buffer.o regress-regress_http.o regress-regress_dns.o regress-regress_testutils.o regress-regress_rpc.o regress-regress.gen.o regress-regress_et.o regress-regress_bufferevent.o regress-regress_listener.o regress-regress_util.o regress-tinytest.o regress-regress_main.o regress-regress_minheap.o regress-regress_thread.o regress-regress_zlib.o regress-regress_ssl.o ../.libs/libevent.so ../.libs/libevent_pthreads.so -lz ../.libs/libevent_openssl.so -lssl -lcrypto -lrt -Wl,-rpath -Wl,/usr/local/lib
make[3]: Leaving directory /root/libevent-2.0.21-stable/test' make[2]: Leaving directory/root/libevent-2.0.21-stable/test'
make[1]: Leaving directory `/root/libevent-2.0.21-stable

file updates not reflected properly

Steps:

  • Create file in riofs mount: echo a > a
  • Copy bigger file over (e.g. riofs binary): cp ../git/riofs/src/riofs a
  • Compare files: diff ../git/riofs/src/riofs a

Binary files ../git/riofs/src/riofs and a differ

A restart of riofs seems to fix it.

Content-Type Not Set

When creating new files on S3, the content-type metadata is not set, causing it to be a default of "binary/octet-stream". This causes a problem because html and other types of files try to download a web browser instead of being processed as expected.

Ideally, the program would detect the file type based on the extension and set it automatically.

Valgrind memory report

Here is a valgrind log after running the md5list script from issue #9 for ~20min:

==8778== Memcheck, a memory error detector
==8778== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==8778== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==8778== Parent PID: 28757
==8778== 
==8778== 
==8778== HEAP SUMMARY:
==8778==     in use at exit: 229,349 bytes in 408 blocks
==8778==   total heap usage: 21,627,427 allocs, 21,627,019 frees, 15,618,941,302 bytes allocated
==8778== 
==8778== 240 bytes in 1 blocks are possibly lost in loss record 48 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930C8: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E93ABD: g_slist_prepend (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9BB64: g_once_init_enter (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E885CB: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E887C8: g_rand_set_seed (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E888C6: g_rand_new_with_seed (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E8909E: g_random_set_seed (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x41143E: main (main.c:535)
==8778== 
==8778== 496 bytes in 1 blocks are possibly lost in loss record 53 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930C8: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9662A: g_string_sized_new (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E66E6D: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E68527: g_build_filename (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x411056: main (main.c:504)
==8778== 
==8778== 496 bytes in 1 blocks are possibly lost in loss record 54 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930C8: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E931E5: g_slice_alloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E767BD: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x410382: range_add (range.c:118)
==8778==    by 0x40EB57: cache_mng_store_file_buf (cache_mng.c:266)
==8778==    by 0x40CDEC: fileio_read_on_get_cb (file_io_ops.c:688)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x538596C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778== 
==8778== 564 (72 direct, 492 indirect) bytes in 1 blocks are definitely lost in loss record 57 of 75
==8778==    at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E7FAE0: g_malloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40B05A: http_connection_make_request (http_connection.c:493)
==8778==    by 0x40CB81: fileio_read_on_con_cb (file_io_ops.c:734)
==8778==    by 0x40C6AF: client_pool_on_client_released (client_pool.c:111)
==8778==    by 0x40AF4E: http_connection_release (http_connection.c:167)
==8778==    by 0x40CD65: fileio_read_on_get_cb (file_io_ops.c:678)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x538596C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5385AA7: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5375E2C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778== 
==8778== 720 bytes in 3 blocks are possibly lost in loss record 58 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E93ABD: g_slist_prepend (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9BB64: g_once_init_enter (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E885CB: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E887C8: g_rand_set_seed (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E888C6: g_rand_new_with_seed (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E8909E: g_random_set_seed (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x41143E: main (main.c:535)
==8778== 
==8778== 792 (72 direct, 720 indirect) bytes in 1 blocks are definitely lost in loss record 60 of 75
==8778==    at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E7FAE0: g_malloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40B05A: http_connection_make_request (http_connection.c:493)
==8778==    by 0x40CB81: fileio_read_on_con_cb (file_io_ops.c:734)
==8778==    by 0x40C6AF: client_pool_on_client_released (client_pool.c:111)
==8778==    by 0x40AF4E: http_connection_release (http_connection.c:167)
==8778==    by 0x40CD65: fileio_read_on_get_cb (file_io_ops.c:678)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x538596C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5375E2C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778== 
==8778== 992 bytes in 2 blocks are possibly lost in loss record 61 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930C8: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E76E32: g_list_append (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E87981: g_queue_push_tail (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40C8FA: client_pool_get_client (client_pool.c:147)
==8778==    by 0x40E325: fileio_read_buffer (file_io_ops.c:924)
==8778==    by 0x407C41: dir_tree_file_read (dir_tree.c:1232)
==8778==    by 0x409BFA: rfuse_read (rfuse.c:523)
==8778==    by 0x5139D5D: ??? (in /lib/libfuse.so.2.8.6)
==8778==    by 0x40A259: rfuse_on_read (rfuse.c:247)
==8778== 
==8778== 1,008 bytes in 1 blocks are possibly lost in loss record 63 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E69A02: g_hash_table_new_full (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40FB53: conf_create (conf.c:59)
==8778==    by 0x4115B6: main (main.c:582)
==8778== 
==8778== 1,119 (576 direct, 543 indirect) bytes in 3 blocks are definitely lost in loss record 64 of 75
==8778==    at 0x4C29DB4: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E7FAE0: g_malloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40D762: fileio_create (file_io_ops.c:60)
==8778==    by 0x407A62: dir_tree_file_open (dir_tree.c:1144)
==8778==    by 0x409C97: rfuse_open (rfuse.c:442)
==8778==    by 0x513A638: ??? (in /lib/libfuse.so.2.8.6)
==8778==    by 0x40A259: rfuse_on_read (rfuse.c:247)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x411BF8: main (main.c:731)
==8778== 
==8778== 1,488 bytes in 3 blocks are possibly lost in loss record 65 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9662A: g_string_sized_new (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E66E6D: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E68527: g_build_filename (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x411056: main (main.c:504)
==8778== 
==8778== 5,952 bytes in 12 blocks are possibly lost in loss record 68 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9662A: g_string_sized_new (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40B1BA: http_connection_make_request (http_connection.c:213)
==8778==    by 0x40C300: http_connection_on_directory_listing_data (http_connection_dir_list.c:246)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5385932: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5375E2C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778== 
==8778== 6,048 bytes in 6 blocks are possibly lost in loss record 69 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930C8: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E69A02: g_hash_table_new_full (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x408B42: dir_tree_on_lookup_cb (dir_tree.c:557)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5375E2C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x411BF8: main (main.c:731)
==8778== 
==8778== 7,440 bytes in 15 blocks are possibly lost in loss record 70 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9662A: g_string_sized_new (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40B1BA: http_connection_make_request (http_connection.c:213)
==8778==    by 0x405D7D: dir_tree_on_lookup_con_cb (dir_tree.c:590)
==8778==    by 0x40C899: client_pool_get_client (client_pool.c:136)
==8778==    by 0x407503: dir_tree_lookup (dir_tree.c:908)
==8778==    by 0x40A0EE: rfuse_lookup (rfuse.c:420)
==8778==    by 0x40A259: rfuse_on_read (rfuse.c:247)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778== 
==8778== 8,432 bytes in 17 blocks are possibly lost in loss record 71 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E9662A: g_string_sized_new (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40B1BA: http_connection_make_request (http_connection.c:213)
==8778==    by 0x40C478: http_connection_get_directory_listing (http_connection_dir_list.c:296)
==8778==    by 0x4067E2: dir_tree_fill_dir_on_http_ready (dir_tree.c:438)
==8778==    by 0x40C899: client_pool_get_client (client_pool.c:136)
==8778==    by 0x406FD0: dir_tree_fill_dir_buf (dir_tree.c:490)
==8778==    by 0x409950: rfuse_readdir (rfuse.c:313)
==8778==    by 0x5139595: ??? (in /lib/libfuse.so.2.8.6)
==8778== 
==8778== 12,096 bytes in 27 blocks are definitely lost in loss record 72 of 75
==8778==    at 0x4C2B6CD: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E7FA78: g_malloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x406A35: dir_tree_fill_on_dir_buf_cb (dir_tree.c:417)
==8778==    by 0x40BC9C: directory_listing_done (http_connection_dir_list.c:194)
==8778==    by 0x40C2B7: http_connection_on_directory_listing_data (http_connection_dir_list.c:237)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5385932: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5375E2C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x411BF8: main (main.c:731)
==8778== 
==8778== 34,720 bytes in 70 blocks are possibly lost in loss record 73 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E76E32: g_list_append (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E87981: g_queue_push_tail (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x40C8FA: client_pool_get_client (client_pool.c:147)
==8778==    by 0x40E325: fileio_read_buffer (file_io_ops.c:924)
==8778==    by 0x407C41: dir_tree_file_read (dir_tree.c:1232)
==8778==    by 0x409BFA: rfuse_read (rfuse.c:523)
==8778==    by 0x5139D5D: ??? (in /lib/libfuse.so.2.8.6)
==8778==    by 0x40A259: rfuse_on_read (rfuse.c:247)
==8778== 
==8778== 37,696 bytes in 76 blocks are possibly lost in loss record 74 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E931E5: g_slice_alloc0 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E767BD: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x410382: range_add (range.c:118)
==8778==    by 0x40EB57: cache_mng_store_file_buf (cache_mng.c:266)
==8778==    by 0x40CDEC: fileio_read_on_get_cb (file_io_ops.c:688)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x538596C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778== 
==8778== 100,800 bytes in 100 blocks are possibly lost in loss record 75 of 75
==8778==    at 0x4C29BE8: memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4C29C97: posix_memalign (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==8778==    by 0x4E4C0C9: ??? (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E930F3: g_slice_alloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x4E69A02: g_hash_table_new_full (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3)
==8778==    by 0x408B42: dir_tree_on_lookup_cb (dir_tree.c:557)
==8778==    by 0x40BC07: http_connection_on_responce_cb (http_connection.c:432)
==8778==    by 0x5384500: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x5375E2C: ??? (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x536B94B: event_base_loop (in /usr/lib/libevent-2.0.so.5.1.4)
==8778==    by 0x411BF8: main (main.c:731)
==8778== 
==8778== LEAK SUMMARY:
==8778==    definitely lost: 12,816 bytes in 32 blocks
==8778==    indirectly lost: 1,755 bytes in 22 blocks
==8778==      possibly lost: 206,528 bytes in 308 blocks
==8778==    still reachable: 8,250 bytes in 46 blocks
==8778==         suppressed: 0 bytes in 0 blocks
==8778== Reachable blocks (those to which a pointer was found) are not shown.
==8778== To see them, rerun with: --leak-check=full --show-reachable=yes
==8778== 
==8778== For counts of detected and suppressed errors, rerun with: -v
==8778== ERROR SUMMARY: 18 errors from 18 contexts (suppressed: 2 from 2)

Performance improvement for cached directory listings

Imagine we never delete a directory listing from cache, but keep it for speeding up future queries. Of course we might need to remove it at some time, but then only because of space and not of time constraints.

Now, riofs could operare as follows:

  1. fuse sends us a dir listing request

  2. assume the directory is older than dir cache timeout

  3. riofs fires a set of parallel list requests with optimal balancing of prefix, marker and max-keys

  4. response comes in very fast and gets served back to fuse

The beauty of this approach is the parallelism that is normally not easily possible as we would have to know the list content in advance to optimally balance the requests. I think though it is a good assumption that the content of a directory changes pretty slowly, hence we can rely on the cached version to speed up subsequent dir listing requests. If it has changed drastically, we've sent more requests than minimally required. This should not be a significant overhead in traffic/request count.

Synching is really slow

I can put a tiny text file in my S3 bucket from the console, and then, about five minutes later, it finally appears in my directory.

Is there any way to speed up this process?

Putting a file in my directory, and then having it appear on S3 is really fast, though.
I understand "Eventual Consistency", but five minutes (From Oregon to Virginia region) just seems excessively long.

error on make of riofs

Hi,

I am running ubuntu 10.10 64bit and currently facing this error when trying to run the 'make' command:

root@ArchiveDB:~/riofs-master/riofs-master# make
Making all in src
make[1]: Entering directory /root/riofs-master/riofs-master/src' gcc -D_FILE_OFFSET_BITS=64 -I/usr/local/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/fuse -I/usr/include/libxml2 -g -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -o riofs riofs-log.o riofs-dir_tree.o riofs-rfuse.o riofs-http_connection.o riofs-http_connection_dir_list.o riofs-bucket_client.o riofs-client_pool.o riofs-file_io_ops.o riofs-cache_mng.o riofs-stat_srv.o riofs-utils.o riofs-conf.o riofs-range.o riofs-main.o -pthread -L/usr/local/lib -lglib-2.0 -lfuse -lrt -ldl -levent -lxml2 -lcrypto -lssl riofs-main.o: In functionapplication_destroy':
/root/riofs-master/riofs-master/src/main.c:608: undefined reference to ERR_remove_thread_state' collect2: ld returned 1 exit status make[1]: *** [riofs] Error 1 make[1]: Leaving directory/root/riofs-master/riofs-master/src'
make: *** [all-recursive] Error 1

Would appreciate if you could help me on this?

simple copy (with cp) creates two versions on a versioned bucket

  1. make sure you try this on a cover with versioning enabled

  2. copy a file with cp into the bucket

  3. check with following python/boto script the versions that were created

{{{
from boto.s3.connection import S3Connection
conn = S3Connection(ID, KEY)
b = conn.get_bucket(BUCKET)
for i in b.list_versions(prefix=FILENAME):
print i.name, i.version_id, i.size
}}}

=> only one should be there, but there a two per copy

=> looking at the strace log there is only one pair of open/close syscalls

negative lookups are not cached

When accessing a riofs mounted directory via proftpd, the ftp deamon checks for
a .ftpaccess file a lot.
If this file is not there, riofs asks s3 for that file on every access.
It would be cool if the fact that .ftpaccess is not existing could also be cached just as other metadata.

add support for fuse options

It would be nice to be able to pass options like allow_other to fuse either on the command line or via the configuration file.

file cache not used as expected

Steps:

  • Copy big file (48M in my case) from riofs mount to /tmp. File is downloaded as expected.
  • Call diff /tmp/ mnt/

=> file is re-downloaded even though it should be in cache.

Log shows:

10:17:46 [cmng](cache_mng_retrieve_file_buf cache_mng.c:200) Entry isn't found or doesn't contain requested range: 2
10:17:46 [fio](fileio_read_on_cache_cb file_io_ops.c:757) Reading from server !!

Device not configured

Hi, on a MacBook I installed the dependencies using MacPorts and was able to compile riofs fine. WhenI ran it in verbose mode it shows no errors. But when I ls to the mounted bucket it says: Device not configured

Any idea how to get this going?

ProductName: Mac OS X
ProductVersion: 10.9.1
BuildVersion: 13B42

Reproducible crash during heavy duty file operations

Not sure whether the stack trace helps:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff768b8c8 in evutil_ascii_strcasecmp () from /usr/lib/libevent-2.0.so.5
(gdb) bt
#0  0x00007ffff768b8c8 in evutil_ascii_strcasecmp () from /usr/lib/libevent-2.0.so.5
#1  0x00007ffff768fecc in evhttp_find_header () from /usr/lib/libevent-2.0.so.5
#2  0x00007ffff768ff87 in ?? () from /usr/lib/libevent-2.0.so.5
#3  0x00007ffff769256c in ?? () from /usr/lib/libevent-2.0.so.5
#4  0x00007ffff7683e2d in ?? () from /usr/lib/libevent-2.0.so.5
#5  0x00007ffff767994c in event_base_loop () from /usr/lib/libevent-2.0.so.5
#6  0x000000000040588f in main ()

Log output right before crash:

12:12:44 [fuse] (rfuse_read_cb rfuse.c:505) [0x249c260] <<<<< read_cb  success: YES IN buf: 131072
12:12:44 [fuse] (rfuse_on_read rfuse.c:245) got 80 bytes from /dev/fuse
12:12:44 [fuse] (rfuse_read rfuse.c:521) [0x249c260] >>>> read  inode: 3150, size: 131072, off: 393216
12:12:44 [dir_tree] (dir_tree_file_read dir_tree.c:1224) [fop: 0x241bf70] read inode 3150, size: 131072, off: 393216
12:12:44 [fio] (fileio_read_get_buf file_io_ops.c:779) requesting [393216 131072]
12:12:44 [fio] (fileio_read_on_cache_cb file_io_ops.c:755) Reading from cache
12:12:44 [dir_tree] (dir_tree_on_buffer_read_cb dir_tree.c:1189) file READ_cb !
12:12:44 [fuse] (rfuse_read_cb rfuse.c:505) [0x249c260] <<<<< read_cb  success: YES IN buf: 131072
12:12:44 [fuse] (rfuse_on_read rfuse.c:245) got 80 bytes from /dev/fuse
12:12:44 [fuse] (rfuse_read rfuse.c:521) [0x249c260] >>>> read  inode: 3150, size: 131072, off: 524288
12:12:44 [dir_tree] (dir_tree_file_read dir_tree.c:1224) [fop: 0x241bf70] read inode 3150, size: 131072, off: 524288
12:12:44 [fio] (fileio_read_get_buf file_io_ops.c:779) requesting [524288 131072]
12:12:44 [fio] (fileio_read_on_cache_cb file_io_ops.c:755) Reading from cache
12:12:44 [dir_tree] (dir_tree_on_buffer_read_cb dir_tree.c:1189) file READ_cb !
12:12:44 [fuse] (rfuse_read_cb rfuse.c:505) [0x249c260] <<<<< read_cb  success: YES IN buf: 131072
12:12:44 [fuse] (rfuse_on_read rfuse.c:245) got 80 bytes from /dev/fuse
12:12:44 [fuse] (rfuse_read rfuse.c:521) [0x249c260] >>>> read  inode: 3150, size: 131072, off: 655360
12:12:44 [dir_tree] (dir_tree_file_read dir_tree.c:1224) [fop: 0x241bf70] read inode 3150, size: 131072, off: 655360
12:12:44 [fio] (fileio_read_get_buf file_io_ops.c:779) requesting [655360 131072]
12:12:44 [fio] (fileio_read_on_cache_cb file_io_ops.c:755) Reading from cache
12:12:44 [dir_tree] (dir_tree_on_buffer_read_cb dir_tree.c:1189) file READ_cb !
12:12:44 [fuse] (rfuse_read_cb rfuse.c:505) [0x249c260] <<<<< read_cb  success: YES IN buf: 131072

This is a reproducible behavior on a large bucket running the following script:

#!/bin/bash
 for i in $(find /var/ftp -mindepth 1 -maxdepth 1 -type d); do
    /usr/bin/md5list.py /var/ftp/${i#/var/ftp/} &
 done

and the md5list.py script:

#!/usr/bin/env python

import os, sys, hashlib, tempfile, shutil, time

if len(sys.argv) < 2:
    print 'usage %s <directory>' % sys.argv[0]
    sys.exit(-1)

timeout = 3600

def create_md5_for_path(path):
    if not os.path.isdir(path):
        return

    md5_filename = os.path.join(path, 'md5.list')

    fd, tmp_filename = tempfile.mkstemp()
    os.fchmod(fd, 0644)
    f = os.fdopen(fd, 'w')
    now = time.time()

    items = []
    files = os.walk(path)

    for root, dirs, files in os.walk(path):
        for fname in files:
            filename = os.path.join(root, fname)
            try:
                ts = os.path.getmtime(filename)
            except OSError:
                ts = now

            if os.path.isfile(filename) and filename != md5_filename and now - ts > timeout:
                hash = hashlib.md5(open(filename).read()).hexdigest()
                relative_filename = os.path.relpath(filename, path)
                items.append((hash, relative_filename))

    items = sorted(items, key=lambda x:x[1]);
    for item in items:
        f.write('%s %s\n' % item)

    f.close()
    shutil.move(tmp_filename, md5_filename)

for path in sys.argv[1:]:
    create_md5_for_path(path)

And the crash information:

2013-04-09 12:22:03.446479500 *** glibc detected *** riofs: double free or corruption (!prev): 0x00000000025d82a0 ***
2013-04-09 12:22:03.559911500 ======= Backtrace: =========
2013-04-09 12:22:03.560016500 /lib/x86_64-linux-gnu/libc.so.6(+0x7eb96)[0x7f3125d3cb96]
2013-04-09 12:22:03.560884500 riofs[0x407a17]
2013-04-09 12:22:03.560919500 riofs[0x407d3e]
2013-04-09 12:22:03.560949500 riofs[0x40a711]
2013-04-09 12:22:03.561012500 /usr/lib/libevent-2.0.so.5(event_base_loop+0x20c)[0x7f31269cc94c]
2013-04-09 12:22:03.561057500 riofs[0x40588f]
2013-04-09 12:22:03.561113500 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7f3125cdf76d]
2013-04-09 12:22:03.561145500 riofs[0x405b19]
2013-04-09 12:22:03.561174500 ======= Memory map: ========
2013-04-09 12:22:03.561285500 00400000-00418000 r-xp 00000000 ca:01 22745                              /usr/bin/riofs
2013-04-09 12:22:03.561286500 00618000-00619000 r--p 00018000 ca:01 22745                              /usr/bin/riofs
2013-04-09 12:22:03.561288500 00619000-0061a000 rw-p 00019000 ca:01 22745                              /usr/bin/riofs
2013-04-09 12:22:03.561290500 025b5000-05694000 rw-p 00000000 00:00 0                                  [heap]
2013-04-09 12:22:03.561291500 7f3124f4c000-7f3124f61000 r-xp 00000000 ca:01 3749                       /lib/x86_64-linux-gnu/libgcc_s.so.1
2013-04-09 12:22:03.561301500 7f3124f61000-7f3125160000 ---p 00015000 ca:01 3749                       /lib/x86_64-linux-gnu/libgcc_s.so.1
2013-04-09 12:22:03.561302500 7f3125160000-7f3125161000 r--p 00014000 ca:01 3749                       /lib/x86_64-linux-gnu/libgcc_s.so.1
2013-04-09 12:22:03.561304500 7f3125161000-7f3125162000 rw-p 00015000 ca:01 3749                       /lib/x86_64-linux-gnu/libgcc_s.so.1
2013-04-09 12:22:03.561311500 7f3125162000-7f312525d000 r-xp 00000000 ca:01 1328                       /lib/x86_64-linux-gnu/libm-2.15.so
2013-04-09 12:22:03.561312500 7f312525d000-7f312545c000 ---p 000fb000 ca:01 1328                       /lib/x86_64-linux-gnu/libm-2.15.so
2013-04-09 12:22:03.561314500 7f312545c000-7f312545d000 r--p 000fa000 ca:01 1328                       /lib/x86_64-linux-gnu/libm-2.15.so
2013-04-09 12:22:03.561369500 7f312545d000-7f312545e000 rw-p 000fb000 ca:01 1328                       /lib/x86_64-linux-gnu/libm-2.15.so
2013-04-09 12:22:03.561371500 7f312545e000-7f3125474000 r-xp 00000000 ca:01 3753                       /lib/x86_64-linux-gnu/libz.so.1.2.3.4
2013-04-09 12:22:03.561373500 7f3125474000-7f3125673000 ---p 00016000 ca:01 3753                       /lib/x86_64-linux-gnu/libz.so.1.2.3.4
2013-04-09 12:22:03.561380500 7f3125673000-7f3125674000 r--p 00015000 ca:01 3753                       /lib/x86_64-linux-gnu/libz.so.1.2.3.4
2013-04-09 12:22:03.561382500 7f3125674000-7f3125675000 rw-p 00016000 ca:01 3753                       /lib/x86_64-linux-gnu/libz.so.1.2.3.4
2013-04-09 12:22:03.561384500 7f3125675000-7f3125677000 r-xp 00000000 ca:01 479                        /lib/x86_64-linux-gnu/libdl-2.15.so
2013-04-09 12:22:03.561390500 7f3125677000-7f3125877000 ---p 00002000 ca:01 479                        /lib/x86_64-linux-gnu/libdl-2.15.so
2013-04-09 12:22:03.561392500 7f3125877000-7f3125878000 r--p 00002000 ca:01 479                        /lib/x86_64-linux-gnu/libdl-2.15.so
2013-04-09 12:22:03.561394500 7f3125878000-7f3125879000 rw-p 00003000 ca:01 479                        /lib/x86_64-linux-gnu/libdl-2.15.so
2013-04-09 12:22:03.561448500 7f3125879000-7f3125880000 r-xp 00000000 ca:01 1296                       /lib/x86_64-linux-gnu/librt-2.15.so
2013-04-09 12:22:03.561449500 7f3125880000-7f3125a7f000 ---p 00007000 ca:01 1296                       /lib/x86_64-linux-gnu/librt-2.15.so
2013-04-09 12:22:03.561451500 7f3125a7f000-7f3125a80000 r--p 00006000 ca:01 1296                       /lib/x86_64-linux-gnu/librt-2.15.so
2013-04-09 12:22:03.561459500 7f3125a80000-7f3125a81000 rw-p 00007000 ca:01 1296                       /lib/x86_64-linux-gnu/librt-2.15.so
2013-04-09 12:22:03.561460500 7f3125a81000-7f3125abd000 r-xp 00000000 ca:01 3785                       /lib/x86_64-linux-gnu/libpcre.so.3.12.1
2013-04-09 12:22:03.561462500 7f3125abd000-7f3125cbc000 ---p 0003c000 ca:01 3785                       /lib/x86_64-linux-gnu/libpcre.so.3.12.1
2013-04-09 12:22:03.561469500 7f3125cbc000-7f3125cbd000 r--p 0003b000 ca:01 3785                       /lib/x86_64-linux-gnu/libpcre.so.3.12.1
2013-04-09 12:22:03.561470500 7f3125cbd000-7f3125cbe000 rw-p 0003c000 ca:01 3785                       /lib/x86_64-linux-gnu/libpcre.so.3.12.1
2013-04-09 12:22:03.561472500 7f3125cbe000-7f3125e73000 r-xp 00000000 ca:01 710                        /lib/x86_64-linux-gnu/libc-2.15.so
2013-04-09 12:22:03.561546500 7f3125e73000-7f3126072000 ---p 001b5000 ca:01 710                        /lib/x86_64-linux-gnu/libc-2.15.so
2013-04-09 12:22:03.561548500 7f3126072000-7f3126076000 r--p 001b4000 ca:01 710                        /lib/x86_64-linux-gnu/libc-2.15.so
2013-04-09 12:22:03.561549500 7f3126076000-7f3126078000 rw-p 001b8000 ca:01 710                        /lib/x86_64-linux-gnu/libc-2.15.so
2013-04-09 12:22:03.561557500 7f3126078000-7f312607d000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561558500 7f312607d000-7f3126095000 r-xp 00000000 ca:01 1235                       /lib/x86_64-linux-gnu/libpthread-2.15.so
2013-04-09 12:22:03.561560500 7f3126095000-7f3126294000 ---p 00018000 ca:01 1235                       /lib/x86_64-linux-gnu/libpthread-2.15.so
2013-04-09 12:22:03.561562500 7f3126294000-7f3126295000 r--p 00017000 ca:01 1235                       /lib/x86_64-linux-gnu/libpthread-2.15.so
2013-04-09 12:22:03.561568500 7f3126295000-7f3126296000 rw-p 00018000 ca:01 1235                       /lib/x86_64-linux-gnu/libpthread-2.15.so
2013-04-09 12:22:03.561570500 7f3126296000-7f312629a000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561571500 7f312629a000-7f3126439000 r-xp 00000000 ca:01 622                        /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
2013-04-09 12:22:03.561573500 7f3126439000-7f3126638000 ---p 0019f000 ca:01 622                        /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
2013-04-09 12:22:03.561626500 7f3126638000-7f3126653000 r--p 0019e000 ca:01 622                        /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
2013-04-09 12:22:03.561628500 7f3126653000-7f312665e000 rw-p 001b9000 ca:01 622                        /lib/x86_64-linux-gnu/libcrypto.so.1.0.0
2013-04-09 12:22:03.561630500 7f312665e000-7f3126662000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561631500 7f3126662000-7f31267b3000 r-xp 00000000 ca:01 10184                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.7.8
2013-04-09 12:22:03.561638500 7f31267b3000-7f31269b2000 ---p 00151000 ca:01 10184                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.7.8
2013-04-09 12:22:03.561640500 7f31269b2000-7f31269ba000 r--p 00150000 ca:01 10184                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.7.8
2013-04-09 12:22:03.561642500 7f31269ba000-7f31269bc000 rw-p 00158000 ca:01 10184                      /usr/lib/x86_64-linux-gnu/libxml2.so.2.7.8
2013-04-09 12:22:03.561648500 7f31269bc000-7f31269bd000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561649500 7f31269bd000-7f3126a00000 r-xp 00000000 ca:01 10948                      /usr/lib/libevent-2.0.so.5.1.4
2013-04-09 12:22:03.561651500 7f3126a00000-7f3126c00000 ---p 00043000 ca:01 10948                      /usr/lib/libevent-2.0.so.5.1.4
2013-04-09 12:22:03.561704500 7f3126c00000-7f3126c01000 r--p 00043000 ca:01 10948                      /usr/lib/libevent-2.0.so.5.1.4
2013-04-09 12:22:03.561705500 7f3126c01000-7f3126c02000 rw-p 00044000 ca:01 10948                      /usr/lib/libevent-2.0.so.5.1.4
2013-04-09 12:22:03.561707500 7f3126c02000-7f3126c03000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561708500 7f3126c03000-7f3126c26000 r-xp 00000000 ca:01 3978                       /lib/libfuse.so.2.8.6
2013-04-09 12:22:03.561716500 7f3126c26000-7f3126e26000 ---p 00023000 ca:01 3978                       /lib/libfuse.so.2.8.6
2013-04-09 12:22:03.561717500 7f3126e26000-7f3126e37000 r--p 00023000 ca:01 3978                       /lib/libfuse.so.2.8.6
2013-04-09 12:22:03.561719500 7f3126e37000-7f3126e38000 rw-p 00034000 ca:01 3978                       /lib/libfuse.so.2.8.6
2013-04-09 12:22:03.561721500 7f3126e38000-7f3126f2a000 r-xp 00000000 ca:01 10617                      /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3
2013-04-09 12:22:03.561727500 7f3126f2a000-7f312712a000 ---p 000f2000 ca:01 10617                      /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3
2013-04-09 12:22:03.561729500 7f312712a000-7f312712b000 r--p 000f2000 ca:01 10617                      /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3
2013-04-09 12:22:03.561789500 7f312712b000-7f312712c000 rw-p 000f3000 ca:01 10617                      /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.3
2013-04-09 12:22:03.561791500 7f312712c000-7f312712d000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561792500 7f312712d000-7f312714f000 r-xp 00000000 ca:01 3714                       /lib/x86_64-linux-gnu/ld-2.15.so
2013-04-09 12:22:03.561794500 7f3127317000-7f3127339000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561801500 7f3127339000-7f3127340000 r--s 00000000 ca:01 29054                      /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
2013-04-09 12:22:03.561803500 7f3127340000-7f3127348000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561804500 7f312734c000-7f312734f000 rw-p 00000000 00:00 0 
2013-04-09 12:22:03.561806500 7f312734f000-7f3127350000 r--p 00022000 ca:01 3714                       /lib/x86_64-linux-gnu/ld-2.15.so
2013-04-09 12:22:03.561807500 7f3127350000-7f3127352000 rw-p 00023000 ca:01 3714                       /lib/x86_64-linux-gnu/ld-2.15.so
2013-04-09 12:22:03.561813500 7fffaf85d000-7fffaf87e000 rw-p 00000000 00:00 0                          [stack]
2013-04-09 12:22:03.561815500 7fffaf9f4000-7fffaf9f5000 r-xp 00000000 00:00 0                          [vdso]
2013-04-09 12:22:03.561817500 ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
2013-04-09 12:22:03.563168500 Got segmentation fault !
2013-04-09 12:22:03.563234500 signal 6 (Aborted), address is 0x3e800003e51 from 0x7f3125cf4425
2013-04-09 12:22:03.563504500 [bt]: (1) /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f3125cf4425]
2013-04-09 12:22:03.563539500 [bt]: (2) /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f3125cf4425]
2013-04-09 12:22:03.563570500 [bt]: (3) /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f3125cf7b8b]
2013-04-09 12:22:03.563601500 [bt]: (4) /lib/x86_64-linux-gnu/libc.so.6(+0x7439e) [0x7f3125d3239e]
2013-04-09 12:22:03.563632500 [bt]: (5) /lib/x86_64-linux-gnu/libc.so.6(+0x7eb96) [0x7f3125d3cb96]
2013-04-09 12:22:03.563665500 [bt]: (6) riofs() [0x407a17]
2013-04-09 12:22:03.563696500 [bt]: (7) riofs() [0x407d3e]
2013-04-09 12:22:03.563726500 [bt]: (8) riofs() [0x40a711]
2013-04-09 12:22:03.563756500 [bt]: (9) /usr/lib/libevent-2.0.so.5(event_base_loop+0x20c) [0x7f31269cc94c]
2013-04-09 12:22:03.563787500 [bt]: (10) riofs() [0x40588f]
2013-04-09 12:22:03.563818500 [bt]: (11) /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f3125cdf76d]
2013-04-09 12:22:03.563848500 [bt]: (12) riofs() [0x405b19]
2013-04-09 13:22:03.257176500 Got segmentation fault !
2013-04-09 13:22:03.314451500 signal 11 (Segmentation fault), address is 0x20000 from 0x7f2f1a482206
2013-04-09 13:22:03.370203500 [bt]: (1) /usr/lib/libevent-2.0.so.5(evhttp_connection_fail+0x86) [0x7f2f1a482206]
2013-04-09 13:22:03.370246500 [bt]: (2) /usr/lib/libevent-2.0.so.5(evhttp_connection_fail+0x86) [0x7f2f1a482206]
2013-04-09 13:22:03.370278500 [bt]: (3) /usr/lib/libevent-2.0.so.5(+0x19e2d) [0x7f2f1a472e2d]
2013-04-09 13:22:03.370310500 [bt]: (4) /usr/lib/libevent-2.0.so.5(event_base_loop+0x20c) [0x7f2f1a46894c]
2013-04-09 13:22:03.370341500 [bt]: (5) riofs() [0x40588f]
2013-04-09 13:22:03.370385500 [bt]: (6) /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f2f1977b76d]
2013-04-09 13:22:03.370437500 [bt]: (7) riofs() [0x405b19]
 Fast File System v0.2
Copyright (C) 2012-2013 Paul Ionkin <[email protected]>
Copyright (C) 2012-2013 Skoobe GmbH. All rights reserved.
Libraries:
 GLib: 2.32.3   libevent: 2.0.16-stable  fuse: 2.8  glibc: 2.15

Features:
 Cache enabled: True

File size is not updating.

Steps to reproduce:

touch aaa
ls -la
echo "123" > aaa
ls -la

the size of "aaa" file is still 0 .

  • dir_cache_max_time is 300sec
  • data is actually sent, file "aaa" contains "123".

Cache error ?

v0.6, Centos 6:
i use config where cache object set to False,
but in log i see usage cache:

..................
02:27:02 [fio](fileio_read_on_head_cb file_io_ops.c:872) [ino: 10] Remote file size: 100
02:27:02 [fio](fileio_read_on_head_cb file_io_ops.c:912) [ino: 10] MD5 sums match, using local cached file!
02:27:02 [fio](fileio_read_get_buf file_io_ops.c:824) [ino: 10] requesting [0: 100], file size: 100
02:27:02 [cmng](cache_mng_retrieve_file_buf cache_mng.c:309) [ino: 10] Read [0:100] bytes, result: OK
02:27:02 [fio](fileio_read_on_cache_cb file_io_ops.c:783) [ino: 10] Reading from cache
02:27:02 [dir_tree](dir_tree_on_buffer_read_cb dir_tree.c:1357) [ino: 10, frop: 0x1208150] file READ_cb !
02:27:02 [fuse](rfuse_read_cb rfuse.c:684) [req: 0x11d3f90] <<<<< read_cb success: YES IN buf: 100
.........

/////////////////////////////////////////////////////////////////////////
.....


-1
-1

<dir_mode type="int">-1</dir_mode>
<file_mode type="int">-1</file_mode>

<!-- time to keep directory cache (seconds) -->
<dir_cache_max_time type="uint">10</dir_cache_max_time>

<!-- time to keep file attributes cache (seconds) -->
<file_cache_max_time type="uint">10</file_cache_max_time>

<!-- set True to enable calculating MD5 sum of file content, increases CPU load -->
<md5_enabled type="boolean">True</md5_enabled>

<!-- set True to enable objects caching -->
<cache_enabled type="boolean">False</cache_enabled>

<!-- directory for storing cache objects -->
<cache_dir type="string">/tmp/riofs</cache_dir>

<!-- maximum size of cache directory (1Gb) -->
<cache_dir_max_size type="uint">1073741824</cache_dir_max_size>

<!-- maximum time of cached object, 1 min -->
<cache_object_ttl type="uint">60</cache_object_ttl>

fmode,dmode

Set fmode, dmode to 0777, 0777 in default xml config gives weird rights. Changing to any well known ACL value e.g. 775 or any others give unpredictable right on the root folder. I set it to 0777 in dir_tree.c, define DIR_DEFAULT_MODE S_IFDIR | 0755 -> define DIR_DEFAULT_MODE S_IFDIR | 0777 and recompiled then I gave the desired result on the root folder.
I think the "allow_other" cmd line value should override the fmode,rmode,guid,uid values. I would be very happy with a config value for override all of these values because a lot of people does need it really, just access to the S3 simply for everybody, this is why I chosen the riofs over s3fs, a days of suck with gids, uids, modes... err

Support for unicode files and directories names

Add support for unicode files and directories names.
Add a few tests which operate with unicode files and directories.

This issue is related to #15

Current behavior:

touch тест.пхп

11:57:00 [con] (http_connection_make_request http_connection.c:561) [0x12d4120] PUT bucket: skoobe-test-s3ffs path: /aaa/тест.пхп host: skoobe-test-s3ffs.s3.amazonaws.com
11:57:00 [con] (http_connection_on_responce_cb http_connection.c:328) Got HTTP response from server! (435msec)
11:57:00 [con]  (http_connection_on_responce_cb http_connection.c:413) Server returned HTTP error: 403 !
11:57:00 [con] (http_connection_on_responce_cb http_connection.c:414) Error str: Forbidden
11:57:00 [con] (http_connection_on_responce_cb http_connection.c:421) Error msg: >>
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><StringToSignBytes>50 55 54 0a 31 42 32 4d 32 59 38 41 73 67 54 70 67 41 6d 59 37 50 68 43 66 67 3d 3d 0a 0a 57 65 64 2c 20 32 34 20 41 70 72 20 32 30 31 33 20 31 31 3a 35 37 3a 30 30 20 47 4d 54 0a 2f 73 6b 6f 6f 62 65 2d 74 65 73 74 2d 73 33 66 66 73 2f 61 61 61 2f c3 91 c2 82 c3 90 c2 b5 c3 91 c2 81 c3 91 c2 82 2e c3 90 c2 bf c3 91 c2 85 c3 90 c2 bf</StringToSignBytes><RequestId>1240EEE32C239C64</RequestId><HostId>CCelF9yA9DUgDZ6Wz7w51MOl5r/2A2WAWEunaUS9Vqu/m7ohYXYFGY5gGn3mOxsA</HostId><SignatureProvided>HQ1OCK1mU/eF/y6huoCw+r6WBNI=</SignatureProvided><StringToSign>PUT
1B2M2Y8AsgTpgAmY7PhCfg==

Wed, 24 Apr 2013 11:57:00 GMT
/skoobe-test-s3ffs/aaa/�е��.п�п</StringToSign><AWSAccessKeyId>AKIAJ7FYHWJ3NYYCXBXA</AWSAccessKeyId></Error><<
11:57:00 [fio]  (fileio_release_on_part_sent_cb file_io_ops.c:282) Failed to send bufer to server !

issue when parsing dates

sample via riofs (ls -l):

-rw-r--r-- 1 root root  514028 Aug 31  2012 9783600000756.epub
-rw-r--r-- 1 root root  867793 Aug 31  2012 9783600000756.jpg
-rw-r--r-- 1 root root    2933 Aug 31  2012 9783600000756.xml
-rw-r--r-- 1 root root  162853 Aug 31  2012 9783600000763.epub
-rw-r--r-- 1 root root  835629 Aug 31  2012 9783600000763.jpg
-rw-r--r-- 1 root root    3000 Aug 31  2012 9783600000763.xml

sample via s3 list api:

6/9783600000749.xml        2012-08-31T16:59:32.000Z
6/9783600000756.epub    2012-08-31T15:35:00.000Z
6/9783600000756.jpg        2012-08-31T16:59:28.000Z
6/9783600000756.xml        2012-08-31T16:59:32.000Z
6/9783600000763.epub    2012-08-31T15:35:00.000Z
6/9783600000763.jpg        2012-08-31T16:59:28.000Z
6/9783600000763.xml        2012-08-31T16:59:32.000Z

The timestamps differ.

It seems that the problem is that dates are always parsed similarly, but S3 uses two different timestamp formats (rfc822 and iso8601).

Infinite loop on large directory listings (possibly related to dir_cache_max_time)

When a directory listing is very large (presumably > 1000 keys) then riofs starts to loop infinitely. Smaller directories are unaffected. We tested it on a directory with 34k entries.

On our tests this occurs when fetching the listing takes longer than the directory timeout. We can work around this issue by setting dir_cache_max_time to a higher value. Ideally though, the time it takes to fetch a directory listing should be independent of the timeout value.

Also, when pressing ctr-c during the loop riofs sigfaults with following message:

09:58:58 [main]  (sigint_cb main.c:243) Got SIGINT
09:58:58 [con] (http_connection_on_close http_connection.c:177) [evcon: 0x18971a0][con: 0x18944e0] Connection closed !
Got segmentation fault !
signal 11 (Segmentation fault), address is 0x7f4e0bb1c008 from 0x7f4e0cca259c
[bt]: (1) /lib/x86_64-linux-gnu/libc.so.6(cfree+0x1c) [0x7f4e0cca259c]
[bt]: (2) /lib/x86_64-linux-gnu/libc.so.6(cfree+0x1c) [0x7f4e0cca259c]
[bt]: (3) ./src/riofs() [0x4066b5]
[bt]: (4) /lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x373d3) [0x7f4e0ddd03d3]
[bt]: (5) /lib/x86_64-linux-gnu/libglib-2.0.so.0(g_hash_table_remove_all+0x1d) [0x7f4e0ddd124d]
[bt]: (6) /lib/x86_64-linux-gnu/libglib-2.0.so.0(g_hash_table_destroy+0xe) [0x7f4e0ddd12de]
[bt]: (7) ./src/riofs() [0x4066a7]
[bt]: (8) ./src/riofs() [0x407685]
[bt]: (9) ./src/riofs() [0x4112ba]
[bt]: (10) ./src/riofs() [0x405847]
[bt]: (11) /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f4e0cc4076d]
[bt]: (12) ./src/riofs() [0x405ac9]
09:58:58 [main]  (sigsegv_cb main.c:213) signal 11 (Segmentation fault), address is 0x7f4e0bb1c008 from 0x7f4e0cca259c

Some files uploaded by PHP don't appear in the local filesystem

I'm using RioFS to mount an S3 bucket (let's call it static.example.com) on an Amazon EC2 instance. I have successfully mounted the bucket. When I run mount, this is returned:

/dev/fuse on /mnt/static.example.com type fuse (rw,nosuid,nodev,allow_other,user=ben)

I can then cd into the bucket. I'm able to mkdir and touch files. It works great. However, when I try to upload a file using Apache/PHP, I'm getting inconsistent results. I have been able to touch() and mkdir() from PHP, and the files/directories appear in the bucket. However, when I attempt to upload a file via PHP, the file never shows up in the locally mounted file system. After running inotify to determine what (if anything) was happening in the directories in question, I found the following:

  • The temporary files that PHP generates for file uploads are appearing momentarily in /tmp
  • The permanent file that PHP says it is writing to, is "opened" in the bucket during move_uploaded_files().

After finding that inotify saw the permanent files as "opened," I decided to take a look at the AWS dashboard. Sure enough, the files are appearing in the web-based S3 client. However, they are not showing up on the filesystem mounted using RioFS on my server. Any ideas?

Read AWSACCESSKEYID and AWSSECRETACCESSKEY from configuration file.

In order to have RioFS mounted at the boot time (/etc/fstab) we need a different way how to provide AWSACCESSKEYID and AWSSECRETACCESSKEY values (right now the only way is to set corresponding environment variables).
Add support to read these variables from the configuration file.

ERROR! Failed to remove directory: /tmp/riofs/riofs_cache

I'm trying to use riofs as multiple users on my machine. When I work as only one user everything works quite well since the permissions on /tmp/riofs are correct, but with multiple users the other user can't make modifications to the cache directory.

Performance comparison between s3fs and riofs

It would be great to see the performance improvements and eventually see where we still have to catch up.

The benchmark could be scripted such that we can reproduce it regularly.

Most importantly would be list loading/caching.

libevent dependency not found

Linux CentOS 6.5

I followed the instructions on how to install the dependencies, but I get

checking for DEPS... configure: error: Package requirements (glib-2.0 >= 2.22 fuse >= 2.7.3 libevent >= 2.0 libxml-2.0 >= 2.6 libcrypto >= 0.9) were not met:

No package 'libevent' found

when I run ./configure

Uninitialized variable can produce crash

See stacktrace:

Program received signal SIGSEGV, Segmentation fault.
dir_tree_entry_update_xattrs (en=0x0, headers=0x68e8f0) at dir_tree.c:1975
1975            if (!en->etag)
(gdb) bt
#0  dir_tree_entry_update_xattrs (en=0x0, headers=0x68e8f0) at dir_tree.c:1975
#1  0x0000000000408e12 in dir_tree_on_lookup_not_found_cb (con=<optimized out>, ctx=0xbe7050, success=<optimized out>, buf=<optimized out>, buf_len=<optimized out>, headers=0x68e8f0)
    at dir_tree.c:667
#2  0x000000000040bc08 in http_connection_on_responce_cb (req=0x1a91330, ctx=0x134c260) at http_connection.c:432
#3  0x00007ffff7692501 in ?? () from /usr/lib/libevent-2.0.so.5
#4  0x00007ffff7683e2d in ?? () from /usr/lib/libevent-2.0.so.5
#5  0x00007ffff767994c in event_base_loop () from /usr/lib/libevent-2.0.so.5
#6  0x0000000000411bf9 in main (argc=1, argv=0x7fffffffe0c8) at main.c:731

Looking at the code it is possible that en is uninitialized when calling dir_tree_entry_update_xattrs and success in dirtree.c:636 is true.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.