Language Selection

English French German Italian Portuguese Spanish

Kernel: Dentry Negativity, Filesystems and Linux Plumbers Conference

Filed under
  • Dentry negativity

    Back in 2017, Waiman Long posted a patch set placing limits on the number of "negative dentries" stored by the kernel. The better part of three years later, that work continues with, seemingly, no better prospects for getting into the mainline. It would be understandable, though, if many people out there don't really know what negative dentries are or why kernel developers care about them. That, at least, can be fixed, even if the underlying problem seems to be more difficult.
    A "dentry" in the Linux kernel is the in-memory representation of a directory entry; it is a way of remembering the resolution of a given file or directory name without having to search through the filesystem to find it. The dentry cache speeds lookups considerably; keeping dentries for frequently accessed names like /tmp, /dev/null, or /usr/bin/tetris saves a lot of filesystem I/O.

    A negative dentry is a little different, though: it is a memory of a filesystem lookup that failed. If a user types "more cowbell" and no file named cowbell exists, the kernel will create a negative dentry recording that fact. Should our hypothetical user, being a stubborn type, repeat that command, the kernel will encounter the negative dentry and reward said user — who is unlikely to be grateful, users are like that — with an even quicker "no such file or directory" error.

  • Filesystem-oriented flags: sad, messy and not going away

    Over the last decade, the addition of a "flags" argument to all new system calls, even if no flags are actually needed at the outset, has been widely adopted as a best practice. The result has certainly been greater API extensibility, but we have also seen a proliferation of various types of flags for related system calls. For calls related to files and filesystems, in particular, the available flags have reached a point where some calls will need as many as three arguments for them rather than just one.
    One set of filesystem-oriented flags will be familiar to almost anybody who has worked with the Unix system-call API: the O_ flags supported by calls like open(). These flags affect how the call operates in a number of ways; O_CREAT will cause the named file to be opened if it does not already exist, O_NOFOLLOW causes the open to fail if the final component in the name is a symbolic link, O_NONBLOCK requests non-blocking operation, and so on. Some of those flags affect the lookup process (O_NOFOLLOW, for example) while others, like O_NONBLOCK, affect how the file descriptor created by the call will behave. All are part of one flag namespace that is recognized by all of the open() family of system calls.

    open() is one way to create a new entry in a directory; link() is another. When the time came to add flags to link(), the linkat() system call was born; this system call also follows the other relatively new pattern of accepting a file descriptor for the directory in which the operation is to be performed. linkat() has a separate flag namespace (the "AT_ flags") with flags like AT_SYMLINK_FOLLOW, which is the opposite of O_NOFOLLOW. There is also an AT_SYMLINK_NOFOLLOW that is not recognized by linkat(), but which is understood by calls like fchmodat() and execveat(). There are more AT_ flags, such as AT_NO_AUTOMOUNT, supported by the relatively new statx() system call.

  • Linux Plumbers Conference: LPC 2020 Call for Refereed-Track Proposals

    Note: We are still hoping to hold the conference as scheduled, but we are continually monitoring the pandemic situation. For current Covid-19 updates, please see our website

    We are pleased to announce the Call for Refereed-Track Proposals for the 2020 edition of the Linux Plumbers Conference, which will be held in Halifax, Nova Scotia, Canada on August 25-27 in conjunction with the Kernel Summit and Linux Maintainers Summit, which takes place on August 28th.

    Refereed track presentations are 50 minutes in length (which includes time for questions and discussion) and should focus on a specific aspect of the “plumbing” in the Linux system. Examples of Linux plumbing include core kernel subsystems, toolchains, container runtimes, core libraries, windowing systems, management tools, device support, media creation/playback, accelerators, hardware interaction, and so on. The best presentations are not about finished work, but rather problems, proposals, or proof-of-concept solutions that require face-to-face discussions and debate.

  • Linux Plumbers Conference: LPC 2020 Call for Microconference Proposals

    We are pleased to announce the Call for Microconferences for the 2020 Linux Plumbers Conference, which will be held in Halifax, Nova Scotia, Canada on August 25-27 in conjunction with Kernel Summit and Linux Maintainers Summit, which takes place on August 28th.

    A microconference is a collection of collaborative sessions focused on problems in a particular area of Linux plumbing, which includes the kernel, libraries, utilities, services, UI, and so forth, but can also focus on cross-cutting concerns such as security, scaling, energy efficiency, toolchains, container runtimes, or a particular use case. Good microconferences result in solutions to these problems and concerns, while the best microconferences result in patches that implement those solutions.

    For more information on submitting a microconference proposal, visit our CfP page.

More in Tux Machines

OSS Leftovers

  • qView is a minimalistic image viewer for Windows, Linux and macOS

    The program doesn't use a lot of resources when you use it normally. I did notice a memory spike viewing a slideshow of high resolution photos, it jumped from 75MB to 150MB, but that may have been due to the fact that the picture was very large in size. Otherwise, it stayed in the 70s for the most part.

  • 6 Open-Source AI Frameworks You Should Know About

    Google’s open-source framework TensorFlow is an ecosystem of tools, libraries and resources that’s used by many popular companies like Airbnb, eBay, DropBox and more. TensorFlow aims to simplify and abstract away the complexity of machine learning algorithms to streamline development. Using visual models and flowgraphs, developers and data scientists can quickly create neural networks and other machine learning models to leverage data. Airbnb, for example, is using TensorFlow to categorize apartment listing photos to ensure they accurately represent a particular space.

  • The OpenUK Awards are now open for nominations.

    We are looking for the best in open source, hardware and data in the UK. Who had achieved something great? Who has not been recognised? Which company or project are doing fabulous work that needs exposure?

Openwashing and SUSE

Debian: ledger2beancount, Reproducible Builds and Debian Project Leader Race

  • Martin Michlmayr: ledger2beancount 2.1 released

    I released version 2.1 of ledger2beancount, a ledger to beancount converter.

  • Reproducible Builds in March 2020

    Welcome to the March 2020 report from the Reproducible Builds project. In our reports we outline the most important things that we have been up to over the past month and some plans for the future.

  • Jonathan Carter: Free Software Activities for 2020-03

    On the 12th of March, I posted my self-nomination for the Debian Project Leader election. This is the second time I’m running for DPL, and you can read my platform here. The campaign period covered the second half of the month, where I answered a bunch of questions on the debian-vote list. The voting period is currently open and ends on 18 April. [...] At DebConf19 I wanted to ramp up the efforts to make a Debian PeerTube instance a reality. I spoke to many people about this and discovered that some Debianites are already making all kinds of Debian videos in many different languages. Some were even distributing them locally on DVD and have never uploaded them. I thought that the Debian PeerTube instance could not only be a good platform for DebConf videos, but it could be a good home for many free software content creators, especially if they create Debian specific content. I spoke to Rhonda about it, who’s generally interested in the Fediverse and wanted to host a instances of Pleroma (microblogging service) and PixelFed (free image hosting service that resembles the Instagram site), but needed a place to host them. We decided to combine efforts, and since a very large amount of fediverse services end with .social in their domain names, we ended up calling this project Debian Social. We’re also hosting some non-fediverse services like a WordPress multisite and a Jitsi instance for video chatting.

Programming: Perl and More

  • 2020.14 More perspectives

    Andrew Shitov has even been more busy than the past weeks. Apart from adding more and more views to the Covid-19 Observer, so many that there’s now an impressive “What’s new” page. But Andrew didn’t stop at that: an article on titled “Observing Coronavirus Pandemic with Raku” (/r/perl comments) explains to the readers how some of the unique features of Raku were applied in processing all of the data. And in the meantime Andrew still found time to publish Chapter 7 of their compiler book.

  • Dancer2 0.300001 Released

    On behalf of the Dancer Core Team, I’d like to announce the availability of Dancer2 0.300001. This maintenance release brings brings a revamped tutorial, fixing of a YAML-related regression, repair of an encoding bug, and a slew of documentation fixes.

  • Perl Weekly Challenge 054: Kth Permutation Sequence + Collatz Conjecture
  • You Need To Stop Using HTML Email

    We need to change this norm from the ground up as a grass roots effort. We'll never convince Gmail and others to automatically display emails in plain text for all users. Nor will we convince companies to stop sending HTML emails to their clients. The only way is to start sending plain text emails and setting up our email programs to only display our received emails as plain text.

    As more and more people do this the companies will begin to follow suite due the increasing number of people being unable to easily read their messages.

    It's also our duty as good email users to only every send emails as plain text because we can not always be sure that the receiver of our emails is using a program that will render out all the HTML instead of displaying it as a webpage.

    Keep in mind that by plain text I don't mean you should not encrypt your emails. If you need to encrypt them then please do; PGP and GPG work very well. When sending an encrypted message; type up your message, encrypt it, and the paste the encrypted output into the email as plain text.

  • Safer SSH agent forwarding

    As mentioned, a better alternative is to use the jump host feature: the SSH connection to the target host is tunneled through the SSH connection to the jump host. See the manual page and this blog post for more details.

    If you really need to use SSH agent forwarding, you can secure it a bit through a dedicated agent with two main attributes:

    it holds only the private key to connect to the target host, and

    it asks confirmation for each requested signature.

  • LLVM's Flang/F18 Fortran Compiler Might Be Back On Track For Merging Soon

    Since the "f18" open-source Fortran compiler front-end was approved last year for merging as the newest LLVM sub-project and using the Flang name, there have been a number of false starts in getting the code merged. This year alone Flang had multiple delays and cancelled merge plans as the developers worked to get the code ready for upstream. Now though it looks like it could be ready to cross that long sought after milestone for having an in-tree Fortran front-end. Richard Barton announced today that the team now believes F18 is ready to be merged. There still are some open items still being worked on, but should be easily resolved after the F18 code is within the tree as the new "Flang" compiler.

  • A Telegram bot in Haskell on Amazon Lambda

    So instead adding layers and complexities, can I solve this instead my making things simpler? If I compiler my bootstrap into a static Linux binary, it should run on any Linux, including Amazon Linux. [...] I am mostly happy with this setup: My game is now available to more people in more ways. I don’t have to maintain any infrastructure. When nobody is using this bot no resources are wasted, and the costs of the service are neglectible -- this is unlikely to go beyond the free tier, and even if it would, the cost per generated image is roughly USD 0.000021. There is one slight disappointment, though. What I find most intersting about Kaleidogen from a technical point of view is that when you play it in the browser, the images are not generated by my code. Instead, my code creates a WebGL shader program on the fly, and that program generates the image on your graphics card.

  • Cambridge Computing Education Research Symposium – recap of our online event
  • Digital Making at Home: Storytelling with code